测试:一个派生类对象,用不同的指针指向她。
#include <iostream>
using namespace std;
class base
{
public:
virtual void func(){cout<<"base"<<endl;}
};
class derive:public base
{
public:
virtual void func(){cout<<"derive"<<endl;}
};
void test()
{
base* ptr1 = new derive();//先用基类指针
ptr1->func();
derive* ptr2 = (derive*)ptr1;//再用派生类指针,需要强制转换
ptr2->func();
base* ptr3= ptr2;//再用基类指针
ptr3->func();
}
int main(void)
{
test();
return 0;
}
输出:
derive
derive
derive