Tiplarni dinamik tarzda aniqlash. Reja: Tiplarni dinamik tarzda aniqlash




Download 0,81 Mb.
bet9/143
Sana20.07.2024
Hajmi0,81 Mb.
#268096
1   ...   5   6   7   8   9   10   11   12   ...   143
Bog'liq
Tiplarni dinamik tarzda-fayllar.org

1.8-dastur. Typeid operatori o‘rniga dynamic_cast operatoridan foydalanish.

#include "stdafx.h" #include #include using namespace std; class Base {


public:
virtual void f() {}
};
class MyClass : public Base { public:

void derivedOnly() {


cout << "Bu MyClass obʻyekti.\n";
}
};
int main(){
Base *bp, b_ob; MyClass *dp, d_ob;
// typeid operatoridan foydalanish
bp = &b_ob;

if(typeid(*bp) == typeid(MyClass)) { dp = (MyClass *) bp;


dp->derivedOnly();
} else
cout <<" Base tipidagi obʻyekt MyClass almashtirilmadi. \n"; bp = &d_ob;
if(typeid(*bp) == typeid(MyClass)) { dp = (MyClass *) bp;
dp->derivedOnly();
} else
cout <<"Xatolik, tip almashtirish yozilmagan! \n";
// dynamic_cast operatoridan foydalanish bp = &b_ob;
dp = dynamic_cast (bp); if(dp) dp->derivedOnly();
else cout << " Base tipidagi obʻyekt MyClass almashtirilmadi. \n"; bp = &d_ob;
dp = dynamic_cast (bp); if(dp) dp->derivedOnly();
else cout << "Xatolik, tip almashtirish yozilmagan! \n"; system("pause");
return 0;
}

1.8 – dastur natijasi. Output


Base tipidagi obʻyekt MyClass almashtirilmadi. Bu MyClass obʻyekti.


Base tipidagi obʻyekt MyClass almashtirilmadi.
Bu MyClass obʻyekti.

1.8-dasturdan ko‘rinadiki, asos sinfning ko‘rasatkichini MyClass ko‘rsatkichiga almashtirishda dynamic_cast operatorini qo‘llash dastur mantig‘ini qulayroq qiladi. Yuqoridagi dastur natijasiga qarang. Shuningdek, dynamic_cast operatorini shablon sinflarga ham qo‘llash mumkin.



Download 0,81 Mb.
1   ...   5   6   7   8   9   10   11   12   ...   143




Download 0,81 Mb.

Bosh sahifa
Aloqalar

    Bosh sahifa



Tiplarni dinamik tarzda aniqlash. Reja: Tiplarni dinamik tarzda aniqlash

Download 0,81 Mb.