面试题答案
一键面试- 默认初始化顺序:
- 首先初始化基类
ClassBase
的成员变量baseVar
。 - 然后按照声明顺序初始化派生类
ClassDerived
的成员变量,即先初始化derivedVar1
,接着初始化derivedVar2
,最后初始化std::vector<int>
。
- 首先初始化基类
- 调整初始化顺序的措施:
在
ClassDerived
的构造函数初始化列表中,按照derivedVar2
、derivedVar1
、std::vector<int>
的顺序进行初始化。例如:ClassDerived::ClassDerived() : derivedVar2("initial value"), derivedVar1(0.0f), myVector() { // 构造函数体 }
- 调整后基类成员
baseVar
的初始化时机: 无论如何调整派生类成员变量的初始化顺序,基类ClassBase
的成员变量baseVar
总是在派生类成员变量初始化之前初始化。即先初始化baseVar
,然后按照构造函数初始化列表中指定的顺序初始化derivedVar2
、derivedVar1
、std::vector<int>
。