面试题答案
一键面试- 构造函数调用顺序:
- 首先调用基类
A
的构造函数。因为B
继承自A
,C
包含B
对象,D
继承自C
,基类A
处于继承体系的最上层,所以先构造A
。 - 接着调用
B
的构造函数。B
是A
的派生类,在A
构造完成后构造B
。 - 然后调用
C
的构造函数。C
包含B
对象作为成员变量,在B
构造完成后构造C
。 - 最后调用
D
的构造函数。D
是继承体系的最下层,在A
、B
、C
都构造完成后构造D
。
- 首先调用基类
- 如果
A
类构造函数需要参数,在D
类构造函数初始化列表中的传递方式: 假设A
类构造函数为A(int param)
,D
类构造函数的初始化列表应该如下:
D::D(int aParam) : A(aParam), C(), B() {
// D类构造函数的其他逻辑
}
在D
类构造函数的初始化列表中,直接通过A(aParam)
将参数aParam
传递给A
类的构造函数,然后依次初始化C
和B
(这里C
和B
假设无特殊参数需求,如果有,按照同样方式在初始化列表中传递参数)。