派生类不仅继承了基类的成员,还添加了新的成员进行了功能的扩充。因此在建立派生类的实例对象时,不仅要初始化派生类对象的基类成员,还要对派生类的新增成员进行初始化。但由于基类的构造函数和析构函数不能被继承,因此派生类构造函数必须负责调用基类构造函数,并对其所需要的参数进行设置。同样,对派生类对象的清理工作也需要加入新的析构函数。
》派生类的构造函数
派生类的数据成员由所有基类的数据成员与派生类新增的数据成员共同组成。构造派生类的对象时,必须对全部数据成员进行初始化。因此,派生类的构造函数必须要以合适的初值作为参数,调用基类的构造函数用以初始化基类的数据成员,并对新增的数据成员进行初始化。
派生类构造函数的一般格式:
<派生类名>::<派生类名>(<总参数表>):<基类名1>(<参数表1>),<基类名2>(<参数表2>),<基类名3>(<参数表3>),......
{
<派生类构造函数体>
}
派生类的构造函数名与类名相同。在构造函数的参数表中,给出了初始化基类数据以及新增数据成员所需要的全部参数。在参数之后的成员初始化列表中,列出需要使用参数进行初始化的基类名和成员名以及各自的参数表,各项之间使用逗号分隔。
当派生类有多个基类时,处于同一层次的各个基类的构造函数的调用顺序取决于定义派生类时声明的顺序(自左向右),而与在派生类构造函数的初始化列表中给出的顺序无关。如