|
Mavzu: Sinflarni yaratishda funksiyalarni qayta yuklash mexanizimidan unumli foydalanish. Reja: Kirish
|
səhifə | 4/8 | tarix | 24.12.2023 | ölçüsü | 155,87 Kb. | | #158242 |
| 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
|
Dostları ilə paylaş: |
|
|