Tamoyilaridan foydalanib, noma’lum nomlar fazosini tashkil qilish ko‘nikmalarini shakllantirish
Tiplarni almashtirish opеratorlari
Download 94.26 Kb.
|
Dasturlash 2 fani 1- amaliy
1.2. Tiplarni almashtirish opеratorlari.
Tiplarni almashtirish operatorlari. C++tilida beshta tipni almatirish operatorlari mavjud. Ulardan birinchisi bu odatdagi (anʻanaviy) uslubda ishlatiladigan[()](cast operatori) azaldan C++gaqurilgan. U quyidagicha ishlatiladi: float f = (float)5;bool b = (bool)5; Dynamic_cast operatori. Dynamic_cast operatori dastur bajarilishi davomida polimorf turdagi quyish amalini bajaradi . Yangi operatorlardan eng muhimi dynamic_cast tipidagi tip almashtirish (kasting, casting) operatoridir. Dasturni bajarish davomida taklif qilinayotgan amalning bajarilishini tekshiradi. Agar belgilangan amal chaqirilganda yaroqsiz bo‘lsa, hech qanday turdagi kasting amalga oshirilmaydi. Dynamic_cast operatorini qo‘llashning umumiy formati quyidagicha:
const_cast operatori. Const_cast operatori const va/yoki volatile o‘zgartirgichlarni qayta aniqlash uchun xizmat qiladi. Const_cast operatori const va / yoki volatile o‘zgartirgichlarni ochiq qayta aniqlash/joriy qilish uchun ishlatiladi. const yoki volatile ning atrubutlariga istesno tariqasida, yangi tipi joriy tipi bilan mos bo‘lishi kerak. Ko‘pincha const_cast operatori const atributini olib tashlash uchun ishlatiladi. Uning umumiy formati quyidagicha:
Operatori polimorf bo‘lmagan tipdagi ko‘rsatkichlarni almashtirish uchun foydalaniladi. Har qanday tipni almashtirish uchun foydalanish mumkin. Biroq, dastur bajarilgan vaqtda hech qanday tekshirish amalga oshirilmaydi. Static_cast operatori quyidagi umumiy yozuv formatiga ega:
dynamic_cast operatoridan foydalanish. #include "stdafx.h" #include #include using namespace std; class Base { public: virtual void f() { cout << " Base sinfi orqali.\n"; } // . . . }; class myClass : public Base { public: void f() { cout << "myClass sinfi orqali.\n"; } }; int main(){ Base *bp, b_ob; myClass *dp, d_ob; dp = dynamic_cast if(dp) { cout << " tipni almashtirish" <<" (myClass* => myClass *) bajarildi. "; dp->f(); } else cout <<"Xatolik\n"; cout << endl; bp = dynamic_cast if(bp) { cout << " tipni almashtirish " <<"(myClass* => Base *) bajarildi. "; bp->f(); } else cout << "Xatolik\n"; cout << endl; bp = dynamic_cast if(bp) { cout << " tipni almashtirish " <<"(Base* => Base *) bajarildi. "; bp->f(); } else cout << "Xatolik\n"; cout << endl; dp = dynamic_cast if(dp) cout <<"Xatolik\n"; else cout <<" tipni almashtirish "<<"(Base*=> myClass*) bajarilmadi.\n"; cout << endl; bp = &d_ob; // bp myClass ob'eyktiga koʻrsatkich dp = dynamic_cast if(dp) { cout << " bp ni myClass tipiga almashtirish bajarildi. "; dp->f(); } else cout << "Xatolik\n"; cout << endl; bp = &b_ob; // br Base ob'eyktiga koʻrsatkich dp = dynamic_cast if(dp) cout << "Xatolik"; else cout <<" bp myClass tipiga almashtirish bajarilmadi.\n"; cout << endl; dp = &d_ob; // dp myClass ob'eyktiga koʻrsatkich bp = dynamic_cast if(bp) { cout <<" dp ni myClass tipiga almashtirish bajarildi. "; bp->f(); } else cout <<"Xatolik\n"; system("pause"); return 0; } Dasturnatijasi: output tipni almashtirish (myClass* => myClass *) bajarildi. myClass sinfi orqali. tipni almashtirish (myClass* => Base *) bajarildi. myClass sinfi orqali. tipni almashtirish (Base* => Base *) bajarildi. Base sinfi orqali. tipni almashtirish (Base*=> myClass*) bajarilmadi. bp ni myClass tipiga almashtirish bajarildi. myClass sinfi orqali. bp myClass tipiga almashtirish bajarilmadi. dp ni myClass tipiga almashtirish bajarildi. myClass sinfi orqali. Download 94.26 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling