GESP 五级 · GESP 五级样题(C++ 组) 第 8 题

选择题 · 答案 D · 考点:函数、函数定义与调用

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

题目

有关下面 C++ 代码正确的是( )? ![](https://cdn.luogu.com.cn/upload/image_hosting/hegagd5v.png)

答案:D

考点

函数函数定义与调用

解题思维

这题考函数重载与重复定义的区别。拿到题别急着选A,先比参数表:无参版f1()与带int版f1(int n)参数不同,合法重载;再按调用实参匹配对应定义,依次输出f1()、f1(0)、f1(48)。

常见错误

很多学生会把重载误当成重复定义,选了A。其实C++允许同名不同参,只要类型或个数不同就行。另外容易忽略调用时实参匹配规则,以为f1(0)会去调用无参版或报错,导致选B或C。命题人爱用绝对化表述挖坑,比如‘一定’‘必须’,要警惕。

详细解析(节选)

【考点】函数重载|函数定义|main函数

GESP五级C++组‘函数与过程’模块第12-14题,命题人专门卡住‘重载’与‘重复定义’的混淆点,九成考生会误选A。

【解题思维】看到多个同名函数先比参数表:无参版f1()与带int版f1(int n)参数不同→合法重载;而f1(0)和f1(48)分别匹配带参版本,依次输出f1(0)与f1(48)。通法:识别同名函数是否构成重载看参数类型/个数,再按调用实参匹配对应定义。

【陷阱拆解】A错在用‘重复定义’偷换概念,重载允许同名不同参;B、C的固定输出源于未区分重载分支;最阴险细节是题干图常缺#include,但选项只考重载,若你只背‘同名必错’就会掉坑。

【反命题思维】若把f1()改成f1(int n){cout<<"f1("<<n<<")\n";},答案必变;若调用写成f1("0")则编译报错。记住:刷到重载题先问‘命题人想考我区分重载还是重复定义’。

【考频趋势】函数定义与调用在题库共考过70题,覆盖9个考试级别(2016-2026);逐年分布:2016年1题、2019年1题、2020年1题、2022年1题、2023年15题、2024年17题、2025年23题、2026年6题、null年5题;分赛事:GESP四级23题、GESP五级19题、GESP六级8题、CSP入门级7题、GESP三级6题、GESP七级3题、GESP二级2题、CSP提高级1题、NOIP提高组初赛1题。重载相关考点近年呈上升趋势,2023-2025年合计55题,占比超70%,说明命题人持续青睐此类辨析题。

【预测】基于数据与经验,未来GESP五级及以上仍会高频出现重载与重复定义的对比题,可能结合模板或默认参数增加复杂度;暂无足够依据预测具体年份或新增题型,故不做硬编。

同考点真题

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