Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1109183
  • 博文数量: 300
  • 博客积分: 37
  • 博客等级: 民兵
  • 技术积分: 772
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-26 04:46
文章分类
文章存档

2017年(4)

2016年(7)

2015年(19)

2014年(72)

2013年(71)

2012年(127)

分类: C/C++

2014-06-08 18:10:08

原文地址:C++虚基类的实现 作者:yishuihe

/*****************************************************************************
* 本程序实现了虚基类的实现,
* 虚基类其实是继承的一种方式,class 派生类名:virtual 继承方式 基类名
* 特点: 如果将直接基类的共同基类设为虚基类,这时从不同的路径继承过来的该类(虚基类)成员在内存中只有一个拷贝
* 本程序中B0是虚基类,派生出B1,B2, 然后B1 B2共同派生出D
* 这时由于B0是虚基类,所以它的成员fun()在内存中只有一个拷贝,所以在主函数中d.fun()是唯一的
* 如果没有将B0定义为虚基类,则其成员fun()在B1 B2中各有一个内存拷贝,这样主函数中d.fun()不是唯一的,错误!
*******************************************************************************/
#include
using namespace std;
class B0
{
public:
 void fun(){printf("member of B0\n");}
};
class B1:virtual public B0
{
};
class B2:virtual public B0
{
};
class D:public B1, public B2
{
};
int main()
{
 D d;
 d.fun();
 d.B1::fun();
 d.B2::fun();
 return 0;
}
阅读(1055) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~