GESP 七级 · GESP 202312 C++ 七级 第 25 题

判断题 · 答案 B · 考点:函数

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

题目

在 C++ 中,如果定义了构造函数,则创建对象时先执行完缺省的构造函数,再执行这个定义的构造函数。( )

答案:B

考点

函数

解题思维

这题考构造函数生成规则。拿到题先想:用户定义构造函数后,编译器还不会自动生成缺省构造函数吗?不会。所以'先执行缺省构造函数'这半句直接从根上错了。

常见错误

学生容易把'默认参数'和'默认构造函数'混为一谈,以为写了构造函数就有缺省构造函数;或者死记'有用户定义构造函数就没有缺省构造函数'却忘了前提是缺省构造函数必须无参且未定义。命题人爱用'缺省的构造函数'这种绝对化表述挖坑,让你以为它在说'无参构造函数',其实它是在说'编译器默认生成的那个',而这个默认生成的动作已经被你的用户定义构造函数给取消了。

详细解析(节选)

考点与概念

C++ 构造函数规则:当类中定义了任意构造函数(哪怕带默认参数),编译器就不再自动生成缺省构造函数(即无参构造函数)。缺省构造函数本质是"无参且未被用户定义"的构造函数,它不是"默认存在"的,而是"默认生成"的;一旦你写了构造函数,"默认生成"这一步就被跳过。

命题视角

命题人故意把"缺省构造函数"和"默认参数"的概念揉在一起,利用学生只背结论不追根究底的毛病:结论"有用户定义构造函数就没有缺省构造函数"是对的,但"缺省构造函数"这个名词本身在语境里指"编译器默认生成的无参构造函数"。题目说"先执行完缺省的构造函数",等于默认那个无参构造函数被调用了,这直接违背了生成规则。这种绝对化表述是典型挖坑手法。

解题心法

拿到题先想:用户定义构造函数后,编译器还不会自动生成缺省构造函数吗?不会。所以"先执行缺省构造函数"这半句直接从根上错了。再看后半句"再执行这个定义的构造函数",逻辑上也不成立,因为没有缺省构造函数可执行,自然谈不上"先执行完"。

避坑

学生常错选 A,原因有二:一是把"默认参数"当成"缺省构造函数",以为写了构造函数就有缺省构造函数;二是死记"有用户定义构造函数就没有缺省构造函数"却忘了前提是缺省构造函数必须无参且未定义。命题人爱用"缺省的构造函数"这种绝对化表述挖坑,让你以为它在说"无参构造函数",其实它是在说"编译器默认生成的那个",而这个默认生成的动作已经被你的用户定义构造函数给取消了。

考频与趋势

本题属于 C++ 构造函数生成规则,GESP 七级考过 91 题,C++ 相关题目在七级占比约 15%,是七级必考知识点之一。从历年分布看,2023 年 C++ 类题目有 287 题,2024 年 413 题,2025 年 401 题,趋势是 C++ 题目持续增加,构造函数规则作为基础考点,未来仍会高频出现,命题人可能继续用"缺省构造函数""默认参数"等概念混淆来挖坑。

预测

暂无足够依据预测未来具体怎么考,但可以预见:命题人仍会围绕"用户定义构造函数后缺省构造函数是否生成"这一核心规则出题,形式可能更隐蔽,比如结合默认参数、类模板或继承场景,要求判断构造顺序或初始化列表。

同考点真题

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