FUNKSIYA ARGUMENTLARNING BERILGAN QIYMATLARI Ba'zi bir funksiyalar ko'pincha bir hil qiymatli argumentlar bilan
chaqirilishi mumkin. Bu holda, agar biz funksiya argumentlariga ushbu ko'p
qo'llaniladigan qiymatlarni bersak, funksiya argumentsiz chaqirilganda bu
qiymatlar kompilyator tomonidan chaqiriqqa kiritiladi. Berilgan qiymatlar
funksiya prototipida berilsa kifoyadir.
Berilgan qiymatli argumentlar parametrlar ro'hatida eng o'ng tomonda yozilishi
kerak. Buning sababi shuki, agar argument qiymati tashlanib o'tilgan bo'lsa,
va u o'ng tomonda joylashmagan bo'lsa, biz bo'sh vergullani qo'yishimizga
to'g'ri keladi, bu esa mumkin emas. Agar bir necha berilgan qiymatli
argumentlar bor bo'lsa, va eng o'ngda joylashmagan argument tushurilib
qoldirilsa, undan keyingi argumentlar ham yozilmasligi kerak.
Bir misol keltiraylik.
//Berilgan qiymatli parametrlar bilan ishlash
# include int square(int = 1, int = 1); // ...(int a=1, int b=1)... // yuqoridagi kabi o'zgaruvchilar otini ham // berishimiz mumkin int main() { int s = 3, t = 7; cout << "Paremetrsiz: " << square()<< endl; cout << "Bitta parametr (ikkinchisi) bilan:" << square(t) << endl; cout << "Ikkita parametr bilan:" << square(s,t) << endl; return (0); } int square(int k, int g){ return ( k * g ); } Ekranda: Parametrsiz: 1 Bitta parametr (ikkinchisi) bilan: 7 Ikkita parametr bilan: 21 FUNKSIYA ISMI YUKLANISHI Bir hil ismli bir necha funksiya e'lon qilinishi mumkin. Bu C++ dagi juda
kuchli tushunchalardandir. Yuklatilgan funksiyalarning faqat kirish
parametrlari farqli bo'lishi yetarlidir. Qaytish parametri yuklatilishda
ahamiyati yo'qdir. Yuklangan funksiyalar chaqirilganda, qaysi funksiyani
chaqirish kirish parametrlarining soniga, ularning tipiga va navbatiga
bog'liqdir. Yani ism yuklanishida funksiyaning imzosi rol o'ynidi. Agar kirish
parametrlari va ismlari ayni funksiyalarning farqi faqat ularning qaytish
qiymatlarida bo'lsa, bu yuklanish bo'lmaydi, kompilyator buni hato deb e'lon
qiladi.
Funksiya yuklanishi asosan ayni ishni yoki amalni farqli usul bilan farqli
ma'lumot tiplari ustida bajarish uchun qo'llaniladi. Masalan bir fazoviy
jismning hajmini hisoblash kerak bo'lsin. Har bir jismning hajmi farqli
formula yordamida, yani farqli usulda topiladi, bir jismda radius tushunchasi
bor bo'lsa, boshqasida asos yoki tomon tushunchasi bor bo'ladi, bu esa farqli
ma'lumot tiplariga kiradi. Lekin amal ayni - hajmni hisoblash. Demak, biz
funksiya yuklanishi mehanizmini qo'llasak bo'ladi. Bir hil amalni bajaruvchi
funksiyalarni ayni nom bilan atashimiz esa, dasturni o'qib tushunishni
osonlashtiradi.
Kompilaytor biz bergan funksiya imzosidan (imzoga funksiya ismi va kirish
parametrlari kiradi, funksiyaning qaytish qiymati esa imzoga kirmaydi) yagona
ism tuzadi, dastur ijrosi davruda esa funksiya chaqirig'idagi argumentlarga
qarab, kerakli funksiyani chaqiradi. Yangi ismni tuzish operatsiyasi ismlar
dekoratsiyasi deb ataladi. Bu tushunchalarni misolda ko'rib chiqaylik.
// Yuklatilgan funksiyalarni qo'llash