面试题答案
一键面试- 调用顺序:
- 首先调用
Base
类的构造函数。 - 然后调用
Member
对象的构造函数。 - 最后调用
Derived
类的构造函数。
- 首先调用
- 原因:
- 基类的构造函数先调用,是因为派生类对象包含基类子对象,必须先初始化基类部分,才能正确构建派生类对象。在C++中,对象的基类部分被视为派生类对象的一部分,先初始化基类部分符合对象构建的逻辑顺序。
Member
对象构造函数在基类构造函数之后调用,是因为在构建派生类对象时,需要先确保基类部分已初始化,再初始化派生类自身的成员对象。成员对象是派生类对象的组成部分,且在基类初始化后进行初始化。- 最后调用派生类
Derived
的构造函数,此时基类部分和成员对象都已初始化完毕,派生类构造函数主要用于完成派生类特有的初始化操作,例如对派生类新增成员变量的初始化等。