Xulosa. Dynamic cast nima uchun kerak ?
Download 48.58 Kb.
|
Dynamic cast
- Bu sahifa navigatsiya:
- B* pb = dynamic_cast(pd); }
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 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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling