1、多重继承
1.1、多重继承的概念
单一继承&多重继承
1.2、多重继承方式下成员名的二义性
在多继承下,派生类继承了多个基类的成员,当两个不同基类拥有同名成员时,容易产生命名冲突的问题。
使用类域限定符明确指出调用函数所属的基类,如m.A::f()。
1.3、多重继承的构造函数和析构函数
派生类必须为每个基类的构造函数提供初始化参数,构造函数的调用次序是先基类,再对象成员,最后才是派生类的构造函数。基类构造函数的调用次序与它们被继承时的声明次序相同,与初始化列表中的次序没有关系。
2、虚拟继承
2.1、虚拟继承引入的原因
C++在解析派生类的成员函数调用时,会现在派生类中查找该函数,若找到就确定该函数是派生类的成员函数;如果没有找到,就在基类中查找该成员函数。单继承时,没影响;但多继承时,会产生二义性。
例如:
class A {
};
class B:public <