Xulosa. Dynamic cast nima uchun kerak ?


Download 48.58 Kb.
bet2/7
Sana28.12.2022
Hajmi48.58 Kb.
#1011767
1   2   3   4   5   6   7
Bog'liq
Dynamic cast

Dynamic_cast operatori
Sintaktis :
dynamic_cast < type-id > ( expression )
dynamic_cast operatori :

  • An'anaviy statik quyishdan ko'ra pastga tushirishni ancha xavfsizroq qiladi

  • Olingan sinf ob'ektiga ko'rsatgichni oladi, bu ob'ektning asosiy sinfiga ko'rsatgich beriladi

  • Ko'rsatkichni faqat aniq olingan sinf mavjud bo'lsagina qaytaradi .

Izohlar :
Bu type-idko'rsatgich yoki oldindan belgilangan sinf turiga havola yoki "bekor qilish uchun ko'rsatgich" bo'lishi kerak. ning turi expressionko'rsatgich bo'lsa type-id, ko'rsatgich yoki type-idhavola bo'lsa l-qiymati bo'lishi kerak.
Static_cast ga qarang: statik va dinamik casting konvertatsiyalari o'rtasidagi farq va har biridan foydalanish maqsadga muvofiqligi.
dynamic_cast Boshqariladigan kodning xatti-harakatlarida ikkita keskin o'zgarishlar mavjud :
dynamic_cast qutidagi raqamning asosiy turiga ko'rsatgichga o'zgartirilgan ko'rsatgich o'rniga 0 ni qaytaradigan ish vaqtida muvaffaqiyatsiz bo'ladi.
dynamic_cast type-id qiymat turiga ichki ko‘rsatgich bo‘lsa, ijro vaqtida cast ishlamay qolsa, endi istisno qilmaydi . Cast endi tashlash o'rniga 0 ko'rsatkich qiymatini qaytaradi.
Agar type-id ning aniq kirish mumkin bo'lgan to'g'ridan-to'g'ri yoki bilvosita asosiy sinfiga ko'rsatgich bo'lsa , natijada expressionturdagi noyob sub'ektga ko'rsatgich bo'ladi . type-id Masalan:
class B { };
class C : public B { };
class D : public C { };
void f(D* pd) {
C* pc = dynamic_cast(pd);
B* pb = dynamic_cast(pd);
}
Ushbu turdagi konvertatsiya "upcast" deb ataladi, chunki u ko'rsatgichni sinf ierarxiyasi bo'ylab yuqoriga, olingan sinfdan olingan sinfga o'tkazadi. Upcast - bu yashirin konvertatsiya.
Agar type-idbekor bo'lsa*, haqiqiy turini aniqlash uchun ish vaqti tekshiruvi o'tkaziladi expression. Natijada ko'rsatgan to'liq ob'ektga ko'rsatgich paydo bo'ladi expression. Masalan:

Download 48.58 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling