基类和派生类中构造函数、析构函数的调用顺序

派生类对象的构造

1. 派生类对象通过继承包含了基类的数据成员和函数,为了对来自基类的数据成员进行初始化,需要在调用  自身构造函数时,在初始化列表中调用基类的构造函数
2. 如果派生类构造函数没有在初始化列表中显示调用基类构造函数,编译器会在派生类构造函数被调用时自  动,调用基类缺省的无参构造函数。(需要保证基类此时存在无参构造函数,在你显示定义了基类构造函数的情况下)
3. 如果想要调用基类有参构造函数,需要在派生类构造函数类显示调用。

派生类构造函数的调用顺序

1. 完成对象所占整块内存的开辟,由系统在调用构造函数时自动完成。
2. 调用基类的构造函数完成基类成员的初始化。
3. 若派生类中含对象成员、 const 成员或引用成员,则必须在初始化表中完成其初始化。
4. 派生类构造函数体执行。

派生类对象的销毁

1. 先调用派生类的析构函数
2. 再调用派生类中成员对象的析构函数
3. 最后调用普通基类的析构函数

多基继承(多基派生)

  • 唯一一点区别在于:首先要执行所有基类的构造函数,再执行派生类构造函数中初始化表达式的其他内容和构造函数体。各基类构造函数的执行顺序与其在初始化表中的顺序无关,而是由定义派生类时指定的基类顺序决定的。
  • 析构函数的执行顺序同样是与构造函数的执行顺序相反。

继承访问权限

posted @ 2023-06-23 21:03  从今天学到明天  阅读(482)  评论(0)    收藏  举报