虚拟继承

一、 虚拟继承
虚拟继承常用于具有如下模式(姑且叫做菱形继承模式)的多重继承中
       b
    /    /
   /      /
 d1       d2 
   /      /
    /    /
       d

d1,d2虚拟继承b,这样d继承d1和d2,但只继承一次b.
class b{};
class d1:vitual public b{};
class d2:vitual public b{};
class d:public d{};
示例代码(转):
#include <iostream.h>
class base {
public:
 void fun()
{
cout<<"我是base"<<endl;
}
};
class dri1:virtual public base {
};
class dri2:virtual public base {
};

class dri3:public dri1,public dri2 {
};
void main()
{
dri3 a;
a.fun();
}
虚拟继承是在多重继承情况下才可能出现,这时用虚拟继承来保证只继承一次.如果这时不采取虚拟继承,a.fun()将不知道是从dri2那里继承得来,还是从dri3那里继承得来.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值