- 派生类对象包含基类对象
- 执行派生类构造函数之前,先执行基类的构造函数
- 派生类交代基类初始化,具体形式:
构造函数名(形参表):基类名(基类构造函数实参表)
{
}
析构函数先调用派生类的构造函数,再调用基类的析构函数。
创建派生类的对象时,执行派生类的构造函数之前:
- 调用基类的构造函数------初始化派生类对象中从基类继承的成员
- 调用成员对象类的构造函数------初始化派生类对象中的成员对象
执行完派生类的析构函数后:
- 调用成员对象类的析构函数
- 调用基类的析构函数
析构函数的调用顺序和构造函数的调用顺序相反。
调用基类构造函数的两种方式
- 显示方式
- 隐式方式
显示方式调用时,基类的构造函数是带有参数的,或者我们需要对派生类中的成员变量进行初始化。如果基类的构造函数重载,则会根据参数表自动调用相应的构造函数。
如果在基类和子对象类型的声明中都没有定义带参数的构造函数,而且不需要对派生类自己的数据成员初始化,那么系统会为派生类创建一个默认的构造函数,而这个默认的构造函数会调用基类的构造函数,这样就实现了隐式调用基类构造函数。
参考链接:
https://www.coursera.org/learn/cpp-chengxu-sheji