3.3. Funksiyaga ob’yektlarni argument sifatida yuborish Key Point. Funksiyagaob’yektlar qiymat orqali yoki havola orqali yuborilishi mumkin, lekin havola orqali yuborilish ko`proq samara beradi. Shu vaqtgacha biz qanday qilib funksiyaga oddiy turni, massiv turni va satrli turni yuborishni o`rgandik. Bundan tashqari, funksiyaga ixtiyoriy ob’yekt turlarini ham yuborish mumkin. Ob’yektlarni qiymatlar orqali yoki havola orqali yuborishimiz mumkin. 3.3-kodli ro`yxatda ob’yektni qiymat orqali yuborishga misol keltirilgan.
3.2-kodli ro`yxat. ObyektniQiymatOrqaliYuborish.cpp 1 #include 2 // CircleWithPrivateDataFields.h 2.7-kodli ro`yxatda berilgan
3 #include "CircleWithPrivateDataFields.h" 4 using namespace std;
5
6 void printCircle(Circle c)
7 {
8 cout <" radiusli doira yuzasi: "
9 <10 }
11
12 int main()
13 {
14 CirclemyCircle(5.0);
15 printCircle(myCircle);
16
17 return0;
18 }
Natija:
5 radiusli doira yuzasi: 78.5397
2.7-kodli royxatda berilgan CircleWithPrivateDataFields.h da aniqlangan Circle sinfi 3-qatorda qo`shilgan. printCircle funksiyasi uchun parametr sifatida Circle aniqlangan (6-qator). Asosiy funksiya myCircle nomli Circle ob’yektini hosil qiladi (14-qator) va uni printCircle funksiyasiga qiymat orqali yuboradi (15-qator). Ob’yektni funksiyaga qiymat orqali yuborish – ob’yektni funksiya parametriga nusxalash demakdir. Shuning uchun, 3.9a-rasmda keltirilganidek, printCircle funksiyasidagi сob’yektimyCircle ob’yektidan mustaqil hisoblanadi.
3.9a-rasm. Ob’yektni funksiyaga qiymat yoki havola orqali yuborish mumkin.
3.4-kodli ro`yxatda ob’yektni funksiyaga havola orqali yuborishga misol keltirilgan.
3.4-kodli ro`yxat. ObyektniHavolaOrqaliYuborish.cpp 1 #include 2 #include "CircleWithPrivateDataFields.h" 3 using namespace std;
4
5 void printCircle(Circle& c)
6 {
7 cout <" radiusli doira yuzasi: "
8 <9 }
10
11 int main()
12 {
13 Circle myCircle(5.0);
14 printCircle(myCircle);
15
16 return 0;
17 }
Natija:
5 radiusli doira yuzasi: 78.5397
Havolali Circle parametr tipi printCircle funksiyasida e’lon qilinadi (5-qator). Asosiy funksiya myCircle nomli Circle ob’yekt hosil qiladi (13-qator) va havolani printCircle funksiyasidagi ob’yektga yuboradi (14-qator). Shuning uchun, 3.9a-rasmda keltirilganidek, printCircle funksiyasidagi сob’yekti myCircle ob’yektining ko`chma qiyofasi (alias i)ga aylanadi. Har holda biz ob’yektni qiymat orqali yoki havola orqali funksiyaga yuborishimiz mumkin, ammo havola orqali yuborish ancha samarali hisoblanadi. Chunki, qiymat orqali yuborish ko`p vaqtni va xotiradan qo`shimcha joyni talab qiladi.