面试题答案
一键面试- 构造函数调用顺序:
- 首先调用基类
A
的构造函数。 - 接着调用基类
B
的构造函数。 - 然后调用类
C
中成员对象M1
的构造函数。 - 再调用类
C
的构造函数。 - 之后调用类
D
中成员对象M2
的构造函数。 - 最后调用类
D
的构造函数。
- 首先调用基类
- 在D类构造函数初始化列表中初始化A、B的成员:
假设
A
的构造函数为A(int a)
,B
的构造函数为B(int b)
,则D
类构造函数的初始化列表应如下:
D::D(int a, int b,...) : A(a), B(b), M2(...) {
// D类构造函数的其他代码
}
在初始化列表中,按照继承层次,先列出基类A
和B
的初始化,传入相应的参数,然后再初始化自身的成员对象M2
。这样可以确保在D
类对象创建时,基类A
和B
的成员被正确初始化。