Muhammad al-xorazmiy nomidagi toshkent axborot texnologiyalari universiteti qarshi filiali


 Tiplarni almashtirish opеratorlari



Yüklə 383,42 Kb.
Pdf görüntüsü
səhifə3/7
tarix21.05.2023
ölçüsü383,42 Kb.
#111811
1   2   3   4   5   6   7
1-Laboratoriya mashguloti Dasturlash 2

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: 
dynamic_cast 
(expr) 
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: 
const_cast (expr) 
static_cast
operatori.
Static_cast 
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: 
static_cast (expr) 
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 (&d_ob); 
if(dp) { 
cout << " tipni almashtirish" <<" (myClass* 
=> myClass *) bajarildi. "; 
dp->f(); 
} else cout <<"Xatolik\n"; 
cout << endl; 
bp = dynamic_cast (&d_ob); 
if(bp) { 
cout << " tipni almashtirish " <<"(myClass* 
=> Base *) bajarildi. "; 
bp->f(); 
} else cout << "Xatolik\n"; 
cout << endl; 
bp = dynamic_cast (&b_ob); 
if(bp) { 
cout << " tipni almashtirish " <<"(Base* => 
Base *) bajarildi. "; 
bp->f(); 
} else cout << "Xatolik\n"; 
cout << endl; 


dp = dynamic_cast (&b_ob); 
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 (bp); 
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 (bp); 
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 (dp); 
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. 

Yüklə 383,42 Kb.

Dostları ilə paylaş:
1   2   3   4   5   6   7




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə