Mavzuga kirish; Shablonlar nazariyasi; Misol: Umumiy toifa
GenericType maxValue(GenericType
Download 61.98 Kb.
|
2) 15- ma\'ruza matni
- Bu sahifa navigatsiya:
- include
- "1 va 3 ning kattasi: "
- “NBC” va “ABC”
- Ogohlantirish.
GenericType maxValue(GenericType value1, GenericType value2)
{ if (value1 > value2) return value1; else return value2; } Mazkur GenericType (UmumiyTur) int, double, char, string kabi turlarning barchasini qo`llay oladi. C++ funksiya shablonlarini umumiy tur bilan aniqlash imkonini beradi. 6.1-kodli ro`yxat umumiy turdagi ikkita qiymatning kattasini topish uchun funksiya shablonini aniqlaydi. 1.1-kodli ro'yxat. GenericMaxValue.cpp #include #include using namespace std; template <typename T> T maxValue(T value1, T value2) { if (value1 > value2) return value1; else return value2; } int main() { cout << "1 va 3 ning kattasi: " << maxValue(1, 3) << endl; cout << "1.5 va 0.3 ning kattasi: " " << maxValue (1.5, 0.3) << endl; cout << "‘A’ va ‘N’ ning kattasi: " << maxValue ('A', 'N') << endl; cout << " \"NBC\" va \"ABC\" ning kattasi: " << maxValue (string("NBC"), string("ABC")) << endl; return 0; } Natija:
Funksiya shablonining aniqlanishi parametrlar ro`yxati tomonidan berilgan template – kalit so`zi bilan boshlanadi. Har bir parametr dastlab o`zaro teng kuchli bo`lgan typename yoki class kalit so`zi orqali, template<typename T> maxValue uchun funksiya shablonining aniqlanishini boshlaydi. Shuningdek, bu satr prefiks shablon deb ham yuritiladi. Bu yerda T – parametr turi. Katta T harfining faqat parametr turini ifodalashda ishlatilishi kelishilgan. maxValue funksiyasi 6-12qatorlarda aniqlangan. Undan funksiya qaytaruvchi qiymat turi, funksiya parametrlari yoki funksiyada e’lon qilingan o`zgaruvchilarning turlarini aniqlashda foydalanish mumkin. Kodning 16-22-qatorlarida int, double, char va string turlari bo`yicha katta qiymatlilarni qaytarish uchun maxValue funksiyasi chaqirilgan. Funksiya maxValue(1, 3) ko`rinishda chaqirilganda, kompilyator argument turi int ekanligini aniqlaydi va funksiyani aniq int turida chaqirish uchun, T – parametr turini int ga o`zgartiradi. Funksiya maxValue(string("NBC"), string("ABC")) ko`rinishda chaqirilganda, kompilyator argument turi string ekanligini aniqlaydi va funksiyani aniq string turida chaqirish uchun, T – parametr turini string ga o`zgartiradi. Agar 22-qatorda berilgan maxValue(string("NBC"), string("ABC")) ni maxValue("NBC", "ABC") deb o`zgartirsak nima bo`ladi? Unda biz funksiya ABC ni qaytarishini ko`rish uchun “syurpriz” tayyorlagan bo`lamiz. Nima uchun? Chunki “NBC” va “ABC” lar – C-satrlardir. maxValue("NBC", "ABC") ning chaqirilishi “NBC” va “ABC” larning manzillarini funksiya parametriga uzatadi. value1 > value2 taqqoslash vaqtida ikkita massivning manzillari taqqoslanadi, tarkiblari emas. Ogohlantirish. Umumiy maxValue funksiyasi ixtiyoriy turdagi ikkita qiymatning kattasini topish uchun mo`ljallangan bo`lib, quyidagicha shartlar asosida ishlaydi: ■ The two values have the same type; ■ The two values can be compared using the >operator. Masalan, agar siz bir qiymatni int turida, ikkinchisini esa, double turida bersangiz, kompilyatsion xatolik yuz beradi. Chunki kompilyator funksiyani chaqirishda mos turni aniqlay olmaydi. Agar siz funksiyani maxValue(Circle(1), Circle(2)) ko`rinishda chaqirsangiz, kompilyatsion xatolik yuz beradi. Chunki Circle sinfida > operatori aniqlanmagan. Download 61.98 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling