MST

星途 面试题库

面试题:C++中类构造函数与析构函数在继承体系下的调用时机

假设有一个基类Base和一个派生类Derived,Derived继承自Base。请详细描述当创建一个Derived类对象时,Base和Derived的构造函数调用顺序;当释放这个对象时,它们的析构函数调用顺序又是怎样的?并且说明原因。
14.1万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. 构造函数调用顺序
    • 首先调用Base类的构造函数。原因是在创建派生类对象时,派生类对象中包含基类的部分,需要先初始化基类部分的成员变量等,所以先调用基类构造函数对基类部分进行初始化。
    • 然后调用Derived类的构造函数。完成对派生类自身特有的成员变量等的初始化。
  2. 析构函数调用顺序
    • 首先调用Derived类的析构函数。原因是在销毁对象时,需要先清理派生类自身特有的资源,例如派生类中动态分配的内存等。
    • 然后调用Base类的析构函数。在清理完派生类特有的资源后,再清理基类部分的资源。