基类中的成员并不是全部都能被派生类所继承,至少基类的构造函数和析构函数是无法继承的,派生类中包含了自身定义的数据成员及从基类中可继承的成员。当初始化派生类的对象时,同时也要初始化基类中的数据成员。
对于派生类中的析构函数也是同样的道理,同样承担着释放基类中的数据成员。因此,派生类的构造函数和析构函数应该包含它的基类的构造函数和析构函数。
由于析构函数都是没有参数的,那么在派生类的析构函数中隐含了基类的析构函数,不需要显示定义。
如果基类的构造函数是默认构造函数,那么派生类不需要显示定义基类构造函数,因为基类的默认构造函数已经包含在派生类的构造函数中了。如果基类的构造函数是带参的,那么在派生类的构造函数的初始化列表中需要显示定义。
派生类中的构造函数与析析构函数执行顺序:
先执行基类的构造函数,再执行派生类的构造函数。
先执行派生类的析构函数,再执行基类的析构函数。
通过以下实例对此部分内容进行诠释: