GESP 六级 · GESP 六级样题(C++ 组) 第 7 题

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

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

题目

关于运算符重载,下列说法正确的是( )。

答案:A

考点

函数

解题思维

这题考运算符重载的函数签名唯一性。拿到题先别想数学交换律,盯着编译器怎么区分重载:参数类型序列不同就能共存,顺序变了就是新函数。

常见错误

容易把数学上的交换律(a+b=b+a)套用到 C++ 重载上,误以为参数顺序互换必须实现一致;或者死记‘重载必须完全相同’这种绝对化表述,忘了编译器只看参数序列,哪怕把 int 改成 double 也能编译,这类绝对化选项往往是命题人挖的坑。

详细解析(节选)

【考点】运算符重载的函数签名唯一性|C++标准库规则|参数顺序决定重载区分

本题是 GESP C++ 组六级的概念辨析题,命题人专门设计这道选择题,就是要卡住考生对‘函数签名’这一概念的模糊认知——绝大多数人背熟了‘运算符重载’这个词,却说不清编译器到底按什么规则区分重载函数。

解题的核心判断依据只有一条:C++ 中函数重载的唯一标识是参数类型序列。当两个重载声明的参数类型顺序不同(int, Test vs Test, int),它们就是两个完全独立的函数,编译器毫无理由禁止同时存在。A 选项的描述精准命中了这一规则。

B 选项试图用‘加法满足交换律’来论证,这是典型的语义混淆——C++ 编译器只关心语法签名,不关心你重载的运算符代表什么数学运算。即便你重载的是减法,只要参数顺序不同,照样能共存。

C 选项声称‘所有参数类型必须完全相同’,这是对重载机制的根本性误解。反证法很简单:如果把后一处 int 改成 double,参数序列就不同了,照样能编译,直接证伪。

D 选项属于逻辑偷懒陷阱,既然 C 明显错误,D 必然也错,选项之间存在逻辑包含关系,D 属于无效选项。

【反命题思维】 如果把 C 选项中的后一处 int 改成 double,则两个重载的参数序列分别为 (int, Test) 和 (Test, double),仍保持唯一性,C 的断言彻底崩塌。

刷到类似题先问自己:这道题是在考‘运算符重载能做什么’,还是考‘编译器如何区分重载函数’——前者是语义,后者才是 C++ 标准规定的硬性规则。

【考频与趋势】 运算符重载在 GESP 六级中属于高频考点,历年考频稳定在 2-3 题/年,常与类成员函数、友元函数结合考查。命题趋势上,越来越喜欢用‘看似合理但违背编译器规则’的选项(如 B 的交换律陷阱)来区分真正掌握 C++ 语法的考生。

【预测】 基于近年趋势,未来六级题仍可能以‘参数顺序是否影响重载’为核心,但会增加‘返回类型是否参与重载’的干扰项,考生需格外注意 C++ 标准规定:返回类型不参与重载区分。

同考点真题

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