10. return value2;
11. }
12. int main()
13. {
14. cout << "1 va 3 ning kattasi: " << maxValue(1, 3) << endl;
15. cout << "1.5 va 0.3 ning kattasi: " "
16. << maxValue (1.5, 0.3) << endl;
17. cout << "‘A’ va ‘N’ ning kattasi: " 18. << maxValue ('A', 'N') << endl;
19. cout << " \"NBC\" va \"ABC\" ning kattasi: " 20. << maxValue (string("NBC"), string("ABC")) << endl;
21. return 0;
22. }
Natija:
1 va 3 ning kattasi: 3
1.5 va 0.3 ning kattasi: 1.5
‘A’ va ‘N’ ning kattasi: N
"NBC" va "ABC" ning kattasi: NBC
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, yoki ko`rinishida beriladi. Masalan, 5-satrdagi
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.