C++虚函数如何使用?

为什么需要虚函数

 

MaiziTest13.cpp : 定义控制台应用程序的入口点。

 

1.代码

 

#include "stdafx.h"

#include<iostream>

using namespace std;

 

//基类base定义

class base

{

public:

virtual void disp()

{

cout<<"Hello,base"<<endl;

}

};

class child1:public base

{

public:

void disp()//派生类child1中定义的disp()函数将base类中定义的disp()函数隐藏

{

cout<<"hello,child1"<<endl;

}

};

class child2:public base

{

public:

void disp()

{

cout<<"hello,child2"<<endl;

}

};

 

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.运行结果

 

 

 

 

原文链接:http://www.maiziedu.com/wiki/cplus/virtual/

猜你喜欢

转载自2789593579.iteye.com/blog/2331416