面试题答案
一键面试-
构造函数调用顺序分析:
- 当创建
D
类对象时,首先调用虚基类A
的构造函数。这是因为虚继承的目的是为了保证在多重继承体系中,虚基类只有一份实例。无论从哪个路径继承,虚基类的构造函数都最先被调用,以确保虚基类部分的正确初始化。 - 接着调用
B
的构造函数,因为B
是D
的直接基类之一,且B
继承自A
(虚继承)。 - 然后调用
C
的构造函数,C
同样是D
的直接基类,且C
也继承自A
(虚继承)。 - 最后调用
D
的构造函数,对D
类自身的数据成员进行初始化。
- 当创建
-
添加输出语句后的输出结果: 假设在类
A
、B
、C
、D
的构造函数中分别添加cout << "A constructor" << endl;
,cout << "B constructor" << endl;
,cout << "C constructor" << endl;
,cout << "D constructor" << endl;
这样的输出语句。
最终输出结果为:
A constructor
B constructor
C constructor
D constructor