面试题答案
一键面试-
构造函数调用顺序:
- 首先调用基类
A
的构造函数。因为B
继承自A
,在构造B
对象时,会先构造其基类部分。这里调用A
的构造函数A(int value)
,参数为3
。 - 然后调用成员变量
innerA
的构造函数。这里调用A
的构造函数A(int value)
,参数为3 + 1 = 4
。 - 最后调用
B
自身的构造函数。
- 首先调用基类
-
成员变量初始化顺序:
- 基类成员变量
m
,在基类A
的构造函数中初始化,值为3
。 - 成员变量
innerA.m
,在innerA
的构造函数中初始化,值为4
。 - 成员变量
n
,在B
的构造函数初始化列表中初始化,值为4
。
- 基类成员变量
-
输出结果解释:
- 首先输出
A constructor: m = 3
,这是基类A
构造函数的输出,此时m
被初始化为3
。 - 接着输出
A constructor: m = 4
,这是成员变量innerA
构造函数的输出,innerA.m
被初始化为4
。 - 最后输出
B constructor: n = 4
,这是B
构造函数的输出,n
被初始化为4
。
- 首先输出
所以完整的输出为:
A constructor: m = 3
A constructor: m = 4
B constructor: n = 4