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



Yüklə 1,02 Mb.
səhifə4/7
tarix28.12.2021
ölçüsü1,02 Mb.
#48090
1   2   3   4   5   6   7
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.



Yüklə 1,02 Mb.

Dostları ilə paylaş:
1   2   3   4   5   6   7




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin