GESP 六级 · GESP 202506 C++ 六级 第 3 题

选择题 · 答案 B · 考点:函数

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

题目

代码同上一题,代码执行结果是( )。

答案:B

考点

函数

解题思维

博弈问题:确定必胜态和必败态。一个状态是必胜态当且仅当存在一个操作使其变为必败态,是必败态当且仅当所有操作都变为必胜态。

常见错误

审题时注意题目要求(选正确还是选错误),避免因审题不清失分。涉及代码的题目要逐行分析变量变化。

详细解析(节选)

【考点】继承|虚函数|多态

1. 考纲定位 本题考查 GESP 六级“面向对象编程”模块的核心机制。命题人专门卡住"virtual 关键字导致动态绑定”的盲区——大量考生仍用静态绑定思维,看到 Animal 就默认调用 Animal::speak()。

2. 解题思维 继承链:Dog 继承 Animal,并重写 speak()。对象实际类型是 Dog,虚函数表(vtable)指向 Dog::speak(),因此输出 Dog barks。通法:基类声明 virtual 函数,派生类覆盖实现后,无论通过哪个类指针/引用调用,最终执行派生类版本;若基类未 virtual 或派生类未重写,则按静态类型调用。

3. 陷阱拆解 A 项是误以为“基类函数不可覆盖”;C 项是忽略继承语法的合法性;D 项是过度联想内存错误。最阴险细节是 Dog 构造函数默认继承 Animal 构造函数链,不会触发任何异常或资源泄漏。若题目把 speak() 改成普通函数,答案即变 A——这就是命题人埋的“去掉 virtual 关键字”陷阱。

4. 反命题思维 命题人视角:若去掉 virtual 关键字,答案变 A;若 Dog 不重写 speak,答案仍 A。一句话提醒:遇到继承体系题,先确认虚函数表是否生效,再判断调用时对象的实际类型。

同考点真题

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