1.8
Copied!
#include <iostream>
#include <typeinfo>
using namespace std;
class Base {
public:
virtual void f() {}
};
class MyClass : public Base {
public:
void derivedOnly() {
cout << "Bu MyClass obyekti.\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 obyekt 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<MyClass*> (bp);
if (dp) dp->derivedOnly();
else cout << " Base tipidagi obyekt MyClass almashtirilmadi. \n";
bp = &d_ob;
dp = dynamic_cast<MyClass*> (bp);
if (dp) dp->derivedOnly();
else cout << "Xatolik, tip almashtirish yozilmagan! \n";
system("pause");
return 0;
}
Run on cpp.sh
Copied!