/*****************************************************************************
* 本程序实现了虚基类的实现,
* 虚基类其实是继承的一种方式,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;
}
阅读(1102) | 评论(0) | 转发(0) |