Tamoyilaridan foydalanib, noma’lum nomlar fazosini tashkil qilish ko‘nikmalarini shakllantirish


Tiplarni almashtirish opеratorlari



Download 25,95 Kb.
bet2/4
Sana19.03.2022
Hajmi25,95 Kb.
#501470
1   2   3   4
Bog'liq
1-laboratoriya

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.


Download 25,95 Kb.

Do'stlaringiz bilan baham:
1   2   3   4




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