对于类似这样一个继承问题:
需要一个基类:动物类
两个子类:马类 驴类
一个子类:骡子类
易知代码如下:
但是,骡子的age确实继承了马和驴的age属性,但是对其进行赋值时,存在二义性:
很明确,age来源于马和驴两个类,但是赋值时不明确,需要进行明确:
但是这不是我们想要的,我们要的是独属于骡子的age
这时就要用到虚继承:
利用virtual关键字在继承方式前加,这里马和驴类都是虚继承,骡子age不再报错
不难看出,菱形继承最终的子类会继承两份数据,而很明显只需要一份,故利用虚继承的方式可以只继承一份,减少资源浪费!