面试题答案
一键面试- 输出顺序:
- “A's constructor”
- “B's constructor”
- “C's constructor”
- 原因:
- 当执行
C c;
时,首先会调用基类A
的构造函数。因为在创建派生类C
的对象时,需要先初始化其基类部分,所以A
的构造函数先执行,输出 “A's constructor”。 - 接着,按照类
C
中成员变量声明的顺序,会调用成员变量b
(类型为B
)的构造函数,输出 “B's constructor”。 - 最后,执行
C
自身的构造函数,输出 “C's constructor”。
- 当执行
- 析构函数调用顺序:
- 当
c
的生命周期结束时,析构函数调用顺序与构造函数相反。 - 首先执行
C
的析构函数,输出 “C's destructor”。 - 然后执行成员变量
b
的析构函数,输出 “B's destructor”。 - 最后执行基类
A
的析构函数,输出 “A's destructor”。
- 当