1.7

#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