面试题答案
一键面试- 虚析构函数调用顺序:
- 首先调用
Derived
类的析构函数,输出Derived destructor
。 - 然后调用
Base
类的析构函数,输出Base destructor
。
- 首先调用
- 原因:
- 当
delete ptr
执行时,由于ptr
指向Derived
类对象(通过new Derived()
创建),并且Base
类的析构函数是虚函数。 - C++的多态机制会根据对象的实际类型(这里是
Derived
)来调用相应的析构函数。所以首先调用Derived
类的析构函数。 - 在
Derived
类析构函数执行完毕后,会自动调用其基类Base
的析构函数,这是C++中析构对象的顺序,先析构派生类部分,再析构基类部分。
- 当