面试题答案
一键面试- 成员变量初始化顺序:
- 在C++中,成员变量的初始化顺序是按照它们在类中声明的顺序进行的,而不是按照构造函数初始化列表中的顺序。在
Base
类中,先声明了int a;
,再声明了int b;
,所以先初始化a
,再初始化b
。
- 在C++中,成员变量的初始化顺序是按照它们在类中声明的顺序进行的,而不是按照构造函数初始化列表中的顺序。在
- 最终
a
和b
值的确定:-
初始化
a
时,b
还未初始化(虽然在初始化列表中b
写在a
前面),b
是一个未定义的值(这里是随机值),此时a
被初始化为b + x
,x
是构造函数传入的参数,b
是未定义值,所以a
是一个不确定的值。 -
接着初始化
b
,b
被初始化为构造函数传入的参数y
。 -
综上所述,
a
的值不确定(因为初始化时b
未初始化),b
的值为构造函数传入的y
值。
-