C++ da umumiy turlardan foydalangan holda, shablon funksiyalar va sinflarni aniqlashimiz mumkin


Download 52.16 Kb.
bet4/10
Sana19.11.2023
Hajmi52.16 Kb.
#1786539
1   2   3   4   5   6   7   8   9   10
Bog'liq
C da umumiy turlardan foydalangan holda, shablon funksiyalar v

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.
Maslahat. Parametr turini belgilashda yoki dan foydalanishimiz mumkin. dan foydalangan ma’qulroq, chunki – tasviriydir. ni esa, sinf aniqlanishi bilan adashtirib yuborish mumkin.
Eslatma. Ba’zi hollarda funksiya shabloni bittadan ko`p parametrlarga ega bo`lishi mumkin. Bunday vaziyatda parametrlarni kabi, barchasini bitta uchburchak qavslar oralig`iga, vergullar bilan ajratilgan holda joylashtiriladi.
1.1-kodli ro`yxatdagi asosiy funksiya parametrlari qiymat qabul qilib oluvchi sifatida aniqlangan. Uni havola qabul qilib oladigan qilib, 1.2-kodli ro`yxatdagi kabi o`zgartirishimiz mumkin.
1.2-kodli ro`yxat. GenericMaxValuePassByReference.cpp

  1. #include

  2. #include

  3. using namespace std;


  1. template T>

  2. T maxValue(const T& value1, const T& value2)

  3. {

  4. if (value1 > value2)

  5. return value1;

  6. else

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


Download 52.16 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling