4.4——多重继承
在前面学习了一个派生类只有一个基类,这种派生方法称为单继承或单基派生。当一个派生类具有两个或多个基类时,这种派生方法称为多重继承或多基派生。
多重继承派生类的声明
在C++中,声明具有两个以上基类的派生类与声明单基派生类的形式相似,只需要将继承的多个基类用逗号分隔即可,声明的一般形式如下:
class 派生类名:继承方式1 基类名1,……继承方式n 基类名n
{
派生类新增的数据成员和成员函数
}
默认的继承方式是private,当出现缺省时,继承方式为private
说明:对基类成员的访问必须是无二义的
当出现二义性,我们怎么解决。
多重继承派生类的构造函数与析构函数
多重继承下派生类构造函数的定义形式与单继承派生类构造函数的定义形式相似,只是n个基类的构造函数之间用逗号分隔。多重继承下派生类构造函数的定义的一般形式如下:
派生类名(参数总表):基类名1(参数表1),基类名2(参数表2)……基类名n(参数表n)
{
派生类新增数据成员初始化语句;
}
多重继承的构造函数的执行顺序和单继承构造函数一样,先执行基类的构造函数,再执行对象成员的构造函数,最后执行派生类的构造函数。
处于同一层次的各个基类构造函数的执行顺序,取决于声明派生类时所指定的各个基类的顺序,与派生类构造函数中定义的成员初始化列表的各项顺序没有关系。
析构函数的执行顺序则刚好与构造函数的执行顺序相反。
由于基类与派生类的析构函数是相互独立的,所以不会因为派生类没有析构函数则基类的析构函数得不到使用。