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



Yüklə 155,87 Kb.
səhifə4/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.

Yuklanma funksiya



Qayta yuklanuvchi funksiya



Yuklanma funksiya klass ichida bo'ladi

Qayta yuklanuvchi funksiya ikkita klass ichida bo'ladi, ya'ni bir-biri bilan bog'langan klasslarda.

Yuklanma funksiya parametrlari har xil bo'ladi

Qayta yuklanuvchi funksiya parametrlari bir xil bo'lishi shart

Yuklanma funksiyada polemorfizm kompilyatsiya vaqtida ishlatiladi

Qayta yuklanuvchi funksiyada polemorfizmdan runtime da foydalaniladi

Yuklanma funksiyada qaytarayotgan ma'lumot turlari o'xshashi yoki o'xshamasligi mumkin

Qayta yuklanuvchi funksiya qaytarayotgan ma'lumot turlari o'xshash bo'lishi kerak



4. Funktsiyalarni ortiqcha yuklash


Funktsiyalarning haddan tashqari yuklanishi — bu bir xil nomdagi, ammo har xil parametrlarga ega bo'lgan bir nechta funktsiyalarni aniqlash qobiliyati. Masalan,:

1
2
3
4

int subtract(int a, int b)
{
return a - b;
}

Bu erda biz butun sonlar bilan ayirish operatsiyasini bajaramiz. Biroq, suzuvchi nuqta tipidagi raqamlardan foydalanishimiz kerak bo'lsa-chi? Bu xususiyat umuman mos emas, chunki double turidagi har qanday parametrlar int turiga aylantiriladi, natijada qiymatlarning kasr qismi yo'qoladi.
Ushbu muammoni hal qilishning bir usuli-har xil nom va parametrlarga ega ikkita funktsiyani aniqlash:

1
2
3
4
5
6
7
8
9

int subtractInteger(int a, int b)
{
return a - b;
}
double subtractDouble(double a, double b)
{
return a - b;
}

Ammo bundan ham yaxshiroq echim bor — funktsiyani haddan tashqari yuklash. Ikki turdagi parametrlarni qabul qiladigan boshqa subtract () funktsiyasini aniqlashimiz mumkin:

1
2
3
4

double subtract(double a, double b)
{
return a - b;
}

Endi bizda subtract () funktsiyasining ikkita versiyasi mavjud:

1
2

int subtract(int a, int b); / / butun son versiyasi
double subtract(double a, double b); / / suzuvchi nuqta turi versiyasi


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ə