通过指向 Base 的指针删除 Derived 对象时,一定会先调用 Derived 的析构函数,再调用 Base 的析构函数。
#include <iostream>
using namespace std;
class Base {
public:
~Base() {
cout << "Base destructor" << endl;
}
};
class Derived : public Base {
public:
~Derived() {
cout << "Derived destructor" << endl;
}
};
int main() {
Base* p = new Derived();
delete p;
return 0;
}仔细审题,明确已知条件和所求目标,运用相关知识点逐项分析。
审题时注意题目要求(选正确还是选错误),避免因审题不清失分。涉及代码的题目要逐行分析变量变化。
【考点】虚析构函数|对象销毁顺序
GESP 六级 类与对象模块。命题人专门挖掉"虚"字,卡住那些只背"delete 调用析构"却不懂多态底层机制的考生。这题就是用来筛掉半吊子的——你背过基类必须有虚析构,但一到实战就忘了"为什么必须"。