O‘zbekiston respublikasi oliy va o‘rta maxsus ta’lim vazirligi tоshkеnt dаvlаt iqtisоdiyot universitеti
Download 1.96 Mb. Pdf ko'rish
|
Obyektga yo`naltirilgan dasturlash tillari
- Bu sahifa navigatsiya:
- 6.3. Sinf komponentlariga ko‘rsatkichlar
6.2. Obyektlarga ko‘rsatkichlar Obyektlar aniqlangandan so‘ng shu obyektlarga ko‘rsatkichlar belgilash mumkin. Masalan: complex A(5.2,2.7); complex* PA=&A; Obyektning umumiy elementlariga murojaat uchun -> operatsiyani yoki ism almashtirish va nuqta operatsiyasidan foydalanish mumkin *PA.real() yoki PA->real; 6.3. Sinf komponentlariga ko‘rsatkichlar Sinf elementlariga ko‘rsatkichlar yordamida murojat etish mumkin. Buning uchun .* i ->* amallari aniqlangan. Sinf maydoniga va usullariga ko‘rsatkichlar har xil tartibda aniqlanadi. Sinf usuliga ko‘rsatkich shakli: turi (sinf_ismi::*ko‘rsatkich_ismi)(parametrlari); Masalan, monstr sinfiga ko‘rsatkichning yozilishi qo‘yidagicha int get_health() {return health;} int get_ammo( ) {return ammo;} //(xuddi shuningdek): int (monstr:: *pget)(); Bunday ko‘rsatkichni funksiya parametri sifatida berish mumkin Bu esa funksiyaga usul ismini berish imkonini beradi: void fun(int (monstr:: *pget)()){ 57 (*this.*pget)();// .* amali orqali funksiyani chaqirish (this->*pget)();// ->* amali orqali funksiyani chaqirish } Ko‘rsatkichni adresni olish orqali aniq bir usulga biriktirish ham mumkin: //Ko‘rsatkich qiymatini o‘zlashtirish: pget=&monstr::get_health; monstr Vasia.*p; p = new monstr; // .* amali orqali funksiyani chaqirish: int Vasin.health - (Vasia.*pget)(); // ->* amali orqali funksiyani chaqirish: int p_heaUh = (p->*pget)(); Qo‘yida sinflarning usullariga ko‘rsatkichlardan foydalanish qoidalari ko‘rsatilgan: Usulga ko‘rsatkich, faqat mos sarlavhaga ega bo‘lgan usullar adresi o‘zlashtirilishi mumkin. Sinfning statik usuliga ko‘rsatkichni aniqlash mumkin emas. Oddiy funksiyaga ko‘rsatkichni usuulga ko‘rsatkichga almashtirish mumkin emas. Oddiy funksiyaga ko‘rsatkich kabi usullarga ko‘rsatkich ismi noma’lum usullar hosil bo‘lgandagina uni chaqirish uchun qo‘llaniladi. Usulga ko‘rsatkich, o‘zgaruvchiga ko‘rsatkich yoki oddiy funksiyaga ko‘rsatkichdan farqi, usulga ko‘rsatkich xotiraning aniq adresiga murojaat etmaydi. U massivning indeksiga o‘xshab ketadi. Xotiraning aniq adresi usulga ko‘rsatkich bilan ma’lum obyektga ko‘rsatkichlar orqali amalga oshiriladi. Sinf maydoniga ko‘rsatkich shakli: ma’lumotlar_turi(sinf_ismi::*ko‘rsatkich_ismi); Ko‘rsatkichni aniqlashda uni initsializatsiyalashtirish shaklida ham berish mumkin: &sinf_ismi::maydon_ismi;// maydon public bo‘lishi kerak 58 Agar health maydoni public kabi aniqlanganda, uning ko‘rsatkichi quyidagi shaklda bo‘lar edi: int (monstr::*phealth)=&monstr::health: cout « Vasia.*phealth; //.* amali orqali murojaat etish cout « p->*phealth; // ->* amali orqali murojaat etish Bu yerda shunga e’tibor etish kerakki sinflarning maydoniga ko‘rsatkichlar oddiy ko‘rsatkichlar bo‘lmaydi, chunki qiymat o‘zlashtirilayotganda ular xotiraning ma’lum adresiga murojaat etmaydi. Xotira sinflar uchun emas balki sinf obektlari uchun ajratiladi. Download 1.96 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling