为什么需要虚函数
MaiziTest13.cpp :定义控制台应用程序的入口点。
1.代码
#include "stdafx.h"
#include
using namespace std;
//基类base定义
class base
{
public:
virtual void disp()
{
cout<<"Hello,base"<
}
};
class child1:public base
{
public:
void disp()//派生类child1中定义的disp()函数将base类中定义的disp()函数隐藏
{
cout<<"hello,child1"<
}
};
class child2:public base
{
public:
void disp()
{
cout<<"hello,child2"<
}
};
void display(base *pb)
{
pb->disp();
}
int _tmain(int argc, _TCHAR* argv[])
{
base *pBase = NULL,obj_base;
obj_base.disp();
pBase = &obj_base;
pBase->disp();
child1 *pchild1 = NULL,obj_child1;
obj_child1.disp();
pchild1 = &obj_child1;
pchild1->disp();
child2 *pchild2 = NULL,obj_child2;
obj_child2.disp();
pchild2 = &obj_child2;
pchild2->disp();
//使用obj_child1的地址为pBase赋值
pBase = &obj_child1;
pBase->disp();
display(&obj_base);
display(&obj_child1);
display(&obj_child2);
return 0;
}
2.运行结果