背景
我们经常熟悉的继承基本都是基于一个基类,也就是单继承。除此之外,C++也支持多继承。
多重继承就是允许有两个或者更多的基类的能力,派生类的对象的行为就像这两个基类中的任何一个对象。看到这里,你是不是觉得挺好的。其实不然,复杂度加深了,出现问题不好排查,并且排查时间和异常抛出都要花费大量的心血。
不建议使用
多重继承容易让代码逻辑复杂,产生歧义(包括语法编译)思想混乱,一直备受争议,中小项目中较少使用,后来的Java,C#,PHP等干脆取消了多继承。
所以不建议大家使用多继承,只要知道有这么一个概念就行了。
代码和例子
运行结果
从运行结果中可以看到,多继承形式下析构函数的执行顺序和构造函数的执行顺序相反。
多重继承的虚基类
单继承下我们可能只需要用到虚函数,虚表这些概念;但是多重继承有一个新名词叫虚基类。当在多条继承路径上有一个公共的基类,在这些路径中的某几条汇合处,这个公共的积累就会产生多个实例&