1.7
Copied!
#include <iostream>
#include <typeinfo>
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<myClass*> (&d_ob);
if (dp) {
cout << " tipni almashtirish" << " (myClass* => myClass *) bajarildi. ";
dp->f();
}
else cout << "Xatolik\n";
cout << endl;
bp = dynamic_cast<Base*> (&d_ob);
if (bp) {
cout << " tipni almashtirish " << "(myClass* => Base *) bajarildi. ";
bp->f();
}
else cout << "Xatolik\n";
cout << endl;
bp = dynamic_cast<Base*> (&b_ob);
if (bp) {
cout << " tipni almashtirish " << "(Base* => Base *) bajarildi. ";
bp->f();
}
else cout << "Xatolik\n";
cout << endl;
dp = dynamic_cast<myClass*> (&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<myClass*> (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<myClass*> (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<Base*> (dp);
if (bp) {
cout << " dp ni myClass tipiga almashtirish bajarildi. ";
bp->f();
}
else cout << "Xatolik\n";
system("pause");
return 0;
}
Run on cpp.sh
Copied!