面试题答案
一键面试- 初始化顺序:
baseVal
subObj
derivedVal
- 原理:
- 在C++中,当创建派生类对象时,首先会调用基类的构造函数来初始化基类部分。所以在
Derived
类的构造函数中,Base(bVal)
会首先执行,初始化baseVal
。 - 然后按照成员变量在类中声明的顺序进行初始化。在
Derived
类中,subObj
声明在前,derivedVal
声明在后,所以subObj
会在derivedVal
之前初始化。虽然在构造函数初始化列表中derivedVal
写在subObj
之前,但初始化顺序是由声明顺序决定的。
- 在C++中,当创建派生类对象时,首先会调用基类的构造函数来初始化基类部分。所以在