Dasturlash II 1-hafta mavzu: Sinf va ob’ektlarni e’lon qilinishi. Konstruktor va destruktor tushunchasi



Download 1,03 Mb.
bet4/7
Sana31.12.2021
Hajmi1,03 Mb.
#201303
1   2   3   4   5   6   7
Bog'liq
D2 maruza-1

1.4. Konstruktorlar

Key Point. Konstruktor ob’yektni yaratish uchun chaqiriladi.

Konstruktor – funksiyalarning alohida tipi bo`lib, quyidagi uch xususiyatga ega:



  1. Konstruktor sinf nomi bilan bir xil bo`lgan nomga ega bo`lishi lozim;

  2. Konstruktorlar qaytaruvchi tipga ega emas, hatto void ga ham;

  3. Konstruktorlar ob’yekt yaratilishida chaqiriladi. Konstruktorlar ob’yektlarni yuklovchi vazifasini bajaradi.

Kontruktor aynan aniqlangan sinf bilan bir xil nomga ega bo`ladi. Boshqa funksiyalar kabi konstruktorlar ham turli ma’lumot turlari qiymatlarida ob’yektlarni konstruksiyalashni osonlashtirish uchun qayta yuklanishi mumkin (bunda bir nechta konstruktorlar bitta nom bilan, ammo turli belgilanishlar bilan keladi).

Ko`p hollarda yo`l qo`yilishi mumkin bo`lgan xatoliklardan biri – void kalit so`zining konstruktordan oldin qo`yilishidir. Masalan:



void Circle()

{

}



Ko`pgina C++ kompilyatorlar bu haqda xatolik beradi, leki ba’zilari buni konstruktor emas, oddiy funksiya sifatida o`qib ketadi.

Konstruktorlar ma’lumot maydonlarini yuklash uchun mo`ljallangan. Radius ma’lumotlar maydoni boshlang`ich qiymatga ega emas va shuning uchun ham u kontruktorda yuklanadi. Bir narsaga e’tiborni qaratish kerakki, o`zgaruvchi (local yoki global) bir operatorda e’lon qilinishi va yuklanishi mumkin, lekin sinf a’zosi sifatida, ma’lumotlar maydoni e’lon qilinganda uni qiymat bilan yuklab bo`lmaydi. Masalan, 1.1-kodli ro`yxatdagi 8-satrda bunday almashtirish xato bo`lar edi:

double radius = 5; // xato

Sinf odatda, konstruktorlarni argumentlarsiz taqdim etadi (masalan, Circle()). Bunday konstruktor argumentsiz konstruktor deb ataladi.

Sinf konstruktorlarsiz aniqlanishi mumkin. Bunday holatlarda sinfda bo`sh tanali argumentsiz konstruktorlar noaniq aniqlanadi. Ular odatga ko`ra konstruktor deb chaqiriladi. Faqat u sinfda noaniq aniqlangan bo`lsa, u avtomatik tarzda, konstruktor sifatida aniqlanadi.

Navbatdagi sintaksisga ko`ra, ma’lumotlar maydoni konstruktor tarkibida, yuklovchilar ro`yxatinidan foydalangan holda yuklanishi mumkin:



ClassName(parameterList)

: datafield1(value1), datafield2(value2) // yuklovchilar ro`yxati

{

// zarurligiga qarab qo`shimcha operatorlaar



}

Bu yerda yulovchilar ro`yxati datafield1 maydonini value1 bilan, datafield2 maydonini value2 bilan yuklaydi. Masalan,



Yuklovchilar ro`yxatini qo`llamagan (b) dagi konstruktor (a) dagi konstruktorga qaraganda ko`proq sezuvchan. Birgina argumentsiz konstruktorga ega bo`lmagan ob’yektning ma’lumotlar maydoni uchun yuklovchilar ro`yxati kerak bo`ladi.



Download 1,03 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish