GESP 六级 · GESP 202406 C++ 六级 第 17 题

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

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

题目

创建一个对象时,会自动调用该对象所属类的构造函数。如果没有定义构造函数,编译器会自动生成一个默认的构造函数。

答案:A

考点

函数

解题思维

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

常见错误

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

详细解析(节选)

【考点】构造函数|默认构造函数|类对象创建

考纲定位:CSP-J/S 基础语法与面向对象模块,GESP 六级必考。命题人卡住的是"默认构造函数"这一隐性知识点——很多考生以为"构造函数=必须定义",其实编译器会补全。这题考察的是对 C++ 标准中默认构造函数生成机制的理解,属于基础但易错点。

解题思维:看到"创建对象"先想"对象出生时刻",此时执行构造函数;若无定义,编译器按语法规范自动补一个"什么都不做"的默认构造函数。因此题干描述完整,正确。关键观察是"如果没有定义构造函数"这一条件,触发编译器生成默认构造函数。

陷阱拆解:错误选项 B 常见套路是偷换概念——把"构造函数必须显式定义"当真理;或混淆"构造函数"与"析构函数"(析构是对象销毁时调用)。题干中"自动生成"是绝对化表述,但符合 C++ 标准,若改成"一定会调用带参数的构造函数"就错。此外,若类中已有带参构造函数,编译器不会再生成默认构造函数,这也是易错点。

反命题思维:如果把条件改为"若类只有带参构造函数,则编译器仍生成默认构造函数",答案变 B,因为此时默认构造函数被隐式删除。刷题时先问:命题人想考我"构造函数默认生成"还是"构造函数参数规则"?

同考点真题

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