先说结论:虚继承是用来解决菱形问题的
菱形问题示意图如下:(来源于网络,用来解释,侵删)
前面提到过多继承的问题,如这个图所示D继承了C1 C2,C1 C2继承了B,那么创建一个D实例对象时,会有什么问题呢:
结论就是在创建D实例的同时不仅会创建C1 C2,还会创建2个B的实例!这个过程是很多余的。
为了不进行创建两个B这个多余的操作,就有了虚继承。将C1 C2对B虚继承:
先说结论:虚继承是用来解决菱形问题的
菱形问题示意图如下:(来源于网络,用来解释,侵删)
前面提到过多继承的问题,如这个图所示D继承了C1 C2,C1 C2继承了B,那么创建一个D实例对象时,会有什么问题呢:
结论就是在创建D实例的同时不仅会创建C1 C2,还会创建2个B的实例!这个过程是很多余的。
为了不进行创建两个B这个多余的操作,就有了虚继承。将C1 C2对B虚继承: