#include <iostream>
#include <Windows.h>
using namespace std;
class base
{
public:
virtual void f() { cout << "Base::f" << endl; }
int type;
};
class Derive :public base
{
public:
Derive(){type = 1;}
void f() { cout << "Derive::f" << endl; }
void f1() { cout << "Derive::f1" << endl; }
int type;
};
class Derive2 :public base
{
public:
Derive2(){type = 2;}
void f() { cout << "Derive2::f" << endl; }
void f2() { cout << "Derive2::f2" << endl; }
int type;
};
void main()
{
base *b = new Derive();
/*
Derive2* pb = (Derive2*)b;
pb->f2(); //如果二个子类是很复杂的,很多时候这里就会报错
*/
if(b->type == 2) //正确的使用方式应该判断一下子类的原始类型
{
Derive2* pb = (Derive2*)b;
pb->f2();
}
system("pause");
}