71 - DARS. SINFLAR VA KO’RSATKICHLAR.
Sinf kompanentalariga ko’rsatkichlar.
Sinfga tegishli funktsiyaga ko’rsatkichlar qo’yidagi ko’rinishga ega:
Funktsiya-tipi (sinf-nomi : :* kursatkich-nomi )
(formal parametrlar spetsifikatsiyasi )
Masalan complex sinfida double & ze ( ), double & im ( ) metodlari aniqlangan. Sinf tashqarisida Ptcom ko’rsatkichini qo’yidagicha kiritish mumkin.
Double & (complex : :* Pt Com) ( );
Bu ko’rsatkich qiymatini oddiy usulda berish mumkin:
Pt Com=& complex : : v;
Endi complex sinfiga tegishli A ob'ekt uchun:
Complex A (10.0, 2.4);
Shu sinfga tegishli re( ) funktsiyasini quyidagicha chiqarish mumkin.
(A. * PtCom) ( )=11.1;
cont < < (A. * PtCom ) ( );
Ko’rsatkich qiymatini o’zgartiramiz:
PtCom=& complex : : im;
Endi bu ko’rsatkich yordamida shu sinfning boshqa funktsiyasining chaqirish mumkin:
Cont < < (A. ^ PtCom) ( );
Complek B=A;
(B. ^ PtCom ( ) f=3.0;
Sinfining komponenta ma'lumotlariga murojat qiluvchi ko’rsatkich ta'rifi:
Ma'lumot-turi (sinf-nomi : : * kursatkich-nomi);
Ko’rsatkichni ta'riflashda initsializatsiya qilish mumkin, lekin buning uchun kompanenta
public (umumiy) formatda ega bo’lishi kerak. Masalan: satr uzilishiga ko’rsatkich yaratish:
Int (stroka : : * pllu)=& stroka : : len;
Tenglikka olib keladi, chunki len kompanentasi private atributiga egadir. Sinf kompanentasiga ko’rsatkichni funktsiyalarni chaqirishda haqiqiy parametr shartida ishlatish mumkin. Buning uchun bu parametrlari qo’yidagiga murojaat qilish lozim. Ob'ekt-nomi.* kompanenta-ma'lumotga-ko’rsatkich
Ob'ekt-nomi.* metodga-ko’rsatkich (parametrlar)
Misol uchun complek sinfi ob'ektlariga ko’rsatkich kiritamiz;
Complex 1 CM(10.2,-6.4);
Complex 1 * PCOM1=& CM;
Bu holda
PCOM1-* PCM1=22.2
Keltirilgan operator M ob'ekt sifatida kiritilgan kompleks sonini haqiqiy qismini o’zgartiradi. Qo’yidagi misolda mos metodga murojaat bajariladi:
Complex A (22.2, 33.3);
complex * P Complex=&A;
Void (complex : : * dirplay) ( );
Pdi 1 play-& complex : : di 1 play;
(P Complex -* Pdi 1 play ( );
Bu misolda ekranga qo’yidagi ma'lumot chiqariladi:
Real=22.2; imag=33.3;
Void di 1 play (void)
{cont < <”\ n satr uzunligi: “ < < ch;
}
~ stroka ( ) { delete [ ] ch; }
};
# include “stroca C P P”
void main ( )
{ stroka LAT (“Non Multa, sed Multa”);
stroka RUS (“Ne mnogo; no mnogoe”);
stroka CTP (20);
LAT. Display( );
Count < < “\ n B ob'ekt RUS: “ << Run string ( );
C T P. display ( );
}
Stroka sinfi clarr hizmatchi so’zi yordamida kiritilgani uchun char * ch va int len kompanentalariga to’g’ridan to’g’ri murojaat qilib bo’lmaydi. Satr uzunligini aniqlash uchun len-str ( ) kompanenta funktsiyasiga murojaat qilish lozimdir. Konkret ob'ektga tegishli satrga ko’rsatkichni string ( ) funktsiyasi qaytaradi. Sinfning kerakli konstruktori mavjud bo’lib qo’shimcha yuklangan funktsiyalardir. Har bir konstruktor bajarilganda dinamik hotira ajratiladi. Sinf destruktori ~stroka ( ) bu hotirani ozod qiladi. in+N parametrlari konstruktor chaqirilganda N+1 elementli massiv bo’sh qoladi,
Satr uzunligi bo’lsa 0 ga teng bo’ladi.
Char * orch parametrli konstruktor chaqirilganda, massiv uzunligi va ---.
Dostları ilə paylaş: |