Tiplarni dinamik tarzda aniqlash



Download 37,4 Kb.
bet1/3
Sana20.07.2022
Hajmi37,4 Kb.
#828711
  1   2   3
Bog'liq
O’g’li (sirtqi) guruh




Tiplarni dinamik tarzda aniqlash. Ushbu vosita polimorf bo‘lmagan tillarda (masalan, C ) mavjud emasligi sababli dinamik turdagi identifikatsiyalash bilan tanish bo‘lmasligigiz mumkin, chunki har bir obʻyektning tipi kompilyatsiya vaqtida (yaʻni, dasturni bajarishda) maʻlum bo‘lgani uchun dastur bajarilishida maʻlumot olishning hojati yo‘q. Biroq, C++ kabi polimorf tillarda obʻyekt tipi kompilyatsiya vaqtida nomaʻlum bo‘lgan holatlar bo‘lishi mumkin, chunki dastur bajarila boshlagunga qadar bu obʻyektning aniq tipi (tiplari) aniqlanmaydi. Maʻlumki, C++ sinf ierarxiyasi, virtual funksiyalar va ko‘rsatkichlarni (pointer) asos sinflarga ishlatib polimorfizmni amalga oshiradi. Tayanch sinfga ko‘rsatkich bu tayanch sinf aʻzolariga yoki undan olingan har qanday obʻyekt aʻzolariga murojaat qilish uchun foydalanish mumkin. Shuning uchun asos sinfga ko‘rsatgichning istalgan vaqtda qanday turdagi obʻyektga murojaat qilishi har doim ham oldindan maʻlum emas. Bu faqat dastur ishlayotganida — dinamik turdagi identifikatsiya vositalaridan biri yordamida aniqlanadi.
Dastur bajarilishi davomida obʻyekt turini olish uchun typeid operatoridan foydalaniladi.
Dastur bajarilayotgan vaqtda obʻyekt tipini olish uchun kutubxonasini kiritish va typeid operatoridan foydalanish mumkin. Typeid operatoridan foydalanishning eng keng tarqalgan yozilish sintaktisi quyidagicha:

typeid(object)

Bunda, object element tipini olish uchun obʻyekt anglatadi. Shuningdek, nafaqat ichki tipini, balki dasturchi tomonidan yaratilgan sinf tipini ham aniqlash mumkin. Buning uchun typeid operatori obʻyekt tipini tasvirlaydigan type_info obʻyektiga murojaat qiladi.
type_info sinfda public modifikatori bilan quyidagi statik operatorlar aniqlangan bo‘ldi.

bool operator == (const type_info &ob);
bool operator !=(const type_info &ob);

bool before(const type_info &ob);


const char *name();



Bunda qayta aniqlangan (overloaded) operatorlari [==] va [!=] tiplarini taqqoslash uchun ishlatiladi. Chaqiruvchi obʻyekt parametr sifatida ishlatiladigan obʻyekt (element ob) oldida ketma-ketlik tartibida bo‘lsa before() funksiyasi true qaytaradi. Bu funksiya asosan ichki foydalanish uchun mo‘ljallangan. Uning natija qiymati merosxo‘r yoki sinf iyerarxik bilan hech qanday aloqasi yo‘q. name() funksiyasi tip nomiga ko‘rsatkich qaytadi.
typeid operatoridan foydalanishga bir misol keltiramiz.



Download 37,4 Kb.

Do'stlaringiz bilan baham:
  1   2   3




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