Mavzu: Sinflarni yaratishda funksiyalarni qayta yuklash mexanizimidan unumli foydalanish. Reja: Kirish



Yüklə 155,87 Kb.
səhifə7/8
tarix24.12.2023
ölçüsü155,87 Kb.
#158242
1   2   3   4   5   6   7   8
Sinflarni yaratishda funksiyalarni qayta yuklash mexanizimidan unumli foydalanish.

4.3. Bir nechta tasodiflar


Agar haddan tashqari Yuklangan funktsiyalarning har biri o'ziga xos parametrlarga ega bo'lishi kerak bo'lsa, unda qanday qilib bir nechta tasodiflar bo'lishi mumkin? Barcha standart va maxsus transformatsiyalar teng deb hisoblanganligi sababli, agar funktsiya chaqiruvi standart yoki maxsus transformatsiya orqali bir nechta nomzodlarga mos keladigan bo'lsa, natijada noaniq o'yin (ya'ni bir nechta gugurt) bo'ladi. Masalan,:

1
2
3
4
5
6

void print(unsigned int value);
void print(float value);
print('b');
print(0);
print(3.14159);

Cprint('b')++ holatida aniq moslikni topa olmaydi. U bint turiga aylantirmoqchi, ammo versiyasi print(int)ham yo'q. Standart konversiyadan foydalanib, C++ bham imzosiz int, ham float-ga o'zgartirishi mumkin. Barcha standart transformatsiyalar teng deb hisoblanganligi sababli, ikkita mos keladi.
print(0)Hammasi bir xil. 0 - bu int, ammo versiyasi print(int)yo'q. Standart konvertatsiya orqali biz yana ikkita o'yinni olamiz.
Ammo print(3.14159)hamma narsa biroz chalkashroq: aksariyat dasturchilar uni aniq deb atashadi print(float). Biroq, esda tutingki, sukut bo'yicha, suzuvchi nuqta turidagi barcha harflar, agar ular tugamagan bo'lsa, double turiga kiradi f3.14159 - bu ikki turdagi qiymat, ammo versiyasi print(double)yo'q. Shunday qilib, biz oldingi holatlarda bo'lgani kabi bir xil vaziyatni olamiz — noaniq tasodif (ikkita variant).
Noaniq tasodif compile-time turidagi xato deb hisoblanadi. Shuning uchun, sizning dasturingiz kompilyatsiya qilinishidan oldin uni yo'q qilish kerak. Ushbu muammoning ikkita echimi mavjud:

Yüklə 155,87 Kb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə