GESP 六级 · GESP 202509 C++ 六级 第 16 题

判断题 · 答案 A

← 整套速查表 GESP 六级 全部真题

题目

当基类可能被多态使用,其析构函数应该声明为虚函数。

答案:A

解题思维

C++类:构造函数(对象创建时调用)、析构函数(对象销毁时调用)、虚函数(实现多态)。构造函数不能为虚。

常见错误

构造函数不能是虚函数(虚表在构造函数完成后才建立)。析构函数可以且通常应该为虚函数(防止内存泄漏)。

详细解析(节选)

考纲定位 (Exam Syllabus Position)

GESP 六级 C++ 面向对象模块,考察虚函数与析构函数的配合。命题人卡住大量考生对"虚函数仅用于成员函数"的刻板认知,忽视虚析构对多态删除的必要性。

解题思维 (Problem Solving Mindset)

看到"多态使用"立刻锁定虚析构:基类指针删除派生对象时,若析构非虚,只会调用基类析构,派生类资源必泄漏。通法:凡作为基类且可能被"基类指针删除"的对象,析构函数必须标 virtual。

陷阱拆解 (Trap Analysis)

错误选项 B 的陷阱在于"绝对化"。命题人利用考生"虚函数仅用于成员函数"的刻板印象,诱导认为"只有显式声明 virtual 才有效"或"只有基类指针删除才需要"。实则只要基类被多态继承,无论删除方式如何,虚析构都必需——这是语言规范而非语义选择。

反命题思维 (Counter-Questioning)

若命题人把"析构函数"换成"成员函数"或把"多态使用"换成"基类指针调用",答案仍为正确,因为虚析构是语言强制的底层保障。刷到类似题先问:"这题考的是语言规范还是语义建议?"

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断