Xulosa. Dynamic cast nima uchun kerak ?


class A {virtual void f();}



Download 48,58 Kb.
bet5/7
Sana14.12.2022
Hajmi48,58 Kb.
#885934
1   2   3   4   5   6   7
Bog'liq
Dynamic cast

class A {virtual void f();};
class B : public A {virtual void f();};
class C : public A { };
class D {virtual void f();};
class E : public B, public C, public D {virtual void f();};

void f(D* pd) {
B* pb = dynamic_cast(pd); // o'zaro to'qnashuv
A* pa = pb; // yuqoriga ko'tarilgan, yashirin konvertatsiya
}
Null ko'rsatkich qiymati maqsad turining null ko'rsatkich qiymatiga tomonidan aylantiriladi dynamic_cast. dan foydalanganda 
dynamic_cast < type-id > ( expression ), agar expressionturiga xavfsiz tarzda aylantirib bo'lmasa type-id, ish vaqtini tekshirish translatsiyani muvaffaqiyatsizlikka olib keladi. Masalan:
class A {virtual void f();};
class B {virtual void f();};
void f() {
A* pa = new A;
B* pb = dynamic_cast(pa); // ish vaqtida muvaffaqiyatsiz tugaydi, xavfsiz emas;
// B A dan kelib chiqmagan
}
Ko'rsatkich turiga o'tkazib yuborilgan muvaffaqiyatsizlik qiymati null ko'rsatkichdir. Muvaffaqiyatsiz uzatish turiga mos yozuvlar bad_cast istisnosini keltirib chiqaradi . Agar expressionto'g'ri ob'ektga ishora qilmasa yoki unga havola qilmasa, __non_rtti_object istisno chiqariladi.
Istisnoni tushuntirish uchun typeid ga qarang __non_rtti_object.

Misol :
Quyidagi namuna ob'ektga (S strukturasi) asosiy sinf (struct A) ko'rsatgichini yaratadi. Bu, shuningdek, virtual funktsiyalar mavjudligi, ish vaqti polimorfizmini ta'minlaydi.
Namuna ierarxiyadagi virtual bo'lmagan funksiyani ham chaqiradi.


#include
#include
struct A {
virtual void test() {
printf_s("in A\n");
}};
struct B : A {
virtual void test() {
printf_s("in B\n");
}
void test2() {

Download 48,58 Kb.

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