面试题答案
一键面试- 调用顺序:
- 首先调用虚基类
A
的析构函数。 - 然后调用
B
的析构函数。 - 接着调用
C
的析构函数。 - 最后调用
D
的析构函数。
- 首先调用虚基类
- 原因:
- 在多重继承中,虚基类的析构函数会首先被调用,这是为了确保虚基类子对象的正确销毁。因为虚基类在派生类中只有一份实例,提前销毁它可以避免在后续销毁其他基类时可能出现的不一致问题。
- 之后按照继承列表中基类的顺序(这里是
B
和C
)依次调用它们的析构函数。 - 最后调用派生类
D
自身的析构函数,因为D
对象的销毁需要先销毁其基类部分,再销毁自身的成员。