c++ 虚基类

c++ 虚基类


虚基类,或者说是虚继承更好容易理解一些。

所谓虚基类是指,当一个子类继承父类的时候,使用了virtual关键字


class B:virtual public A


那么基类A就是类B的虚基类。


为什么会有这种现象呢? 

这是因为在c++中允许存在多继承,也就是说class D可以同时继承B和C

而 很有可能B和C都是A的子类。


那这就会出现一个问题。在子类D中会不会有多份A的数据? 答案是 确实是有多份。因为编译器要想实现这种智能的话可能要太费力。所以我们要显式的告诉编译器

不要给我多份数据。这就不需要编译器智能判断了。(现在编译器没有这种功能。)解决方式就是在继承的时候使用virtual。


这种需求出现在以下情况,

有一些接口或者是概念上的基类。

然后对基类进行一些详细的扩展。但是这些扩展还只是一些大的概念的扩展。

具体的实现需要对这些基类进行组合。当然理想的方式是类的组合排列。但有些人喜欢多重继承。

如果使用多重继承,就不要忘记使用virtual,尤其是你写一些接口给别人使用的时候。你不知道别人是使用组合呢还是使用多重继承。









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值