GESP 六级 · GESP 202312 C++ 六级 第 4 题

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

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

题目

有关下面 C++ 代码的说法,错误的是( )。

struct BiNode {
    char data;
    BiNode* lchid, *rchid;
};
class BiTree {
private:
    BiNode* Creat();
    void Release(BiNode* bt);
    BiNode* root;
public:
    BiTree() {
        root = Creat();
    }
    ~BiTree() {
        Release(root);
    }
};
答案:D

考点

函数

解题思维

这题考的是C++类与结构体语法,特别是构造函数、析构函数及内存管理。拿到题先别急着看选项,先把代码跑一遍脑内:构造函数里调Creat()分配头结点,析构函数里调Release()回收。记住,题目问的是‘错误的是’,这种反向提问最容易掉坑里。

常见错误

学生最容易栽在两个地方:一是看到‘析构函数’就脑补成‘必须写’,忽略了C++默认会合成一个空析构函数;二是把‘BiTree’当成‘必须管理资源’的类,其实如果Creat()只返回一个静态对象或根本不分配堆内存,析构函数完全可以省略。另外,题干里‘各种二叉树’这种绝对化表述也要警惕,代码里Creat()和Release()的实现没给,理论上只要它们能处理任意形态的二叉树,A才成立,但命题人往往用‘各种’来设陷阱。

详细解析(节选)

【考点】C++类与结构体|构造函数与析构函数|析构函数RAII

这题考的是对C++类成员函数语义的理解,特别是构造函数、析构函数以及RAII(资源获取即初始化)思想。struct BiNode定义二叉树节点,BiTree类用root指向头指针,构造函数里调用Creat()分配内存,析构函数则负责释放。关键在选项D的绝对化表述。

命题人设陷阱就在‘不可以省略’这个断言上。C++中析构函数确实可选,若BiTree不管理资源(如BiNode结构体)完全可省,编译器会生成默认析构。但BiTree构造函数里显式调用了Creat(),通常意味着要分配堆内存,所以析构函数必须释放,否则内存泄漏。不过,题目只给了类声明,没给Creat()和Release()的具体实现。如果Creat()返回的是一个静态对象或根本不分配堆内存,析构函数就可以省略。因此,‘不可以省略’是绝对化的,错误。

再看其他选项:A说‘适用于构造各种二叉树’,只要Creat()和Release()能处理任意形态的二叉树,A就成立;B说struct BiNode用于构造节点,显然正确;C说构造函数里调用Creat()分配头结点,也正确。所以错误的是D。

思考心法:拿到题先别急着看选项,先把代码跑一遍脑内:构造函数里调Creat()分配头结点,析构函数里调Release()回收。记住,题目问的是‘错误的是’,这种反向提问最容易掉坑里。然后逐项分析:看每个选项是否符合C++语法和语义,特别注意绝对化表述(如‘各种’‘不可以’‘一定’),这些往往是命题人挖的坑。最后结合RAII思想判断:析构函数是否必须存在,取决于类是否管理资源。

避坑:学生最容易栽在两个地方:一是看到‘析构函数’就脑补成‘必须写’,忽略了C++默认会合成一个空析构函数;二是把‘BiTree’当成‘必须管理资源’的类,其实如果Creat()只返回一个静态对象或根本不分配堆内存,析构函数完全可以省略。另外,题干里‘各种二叉树’这种绝对化表述也要警惕,代码里Creat()和Release()的实现没给,理论上只要它们能处理任意形态的二叉树,A才成立,但命题人往往用‘各种’来设陷阱。

考频与趋势:二叉树基础在题库共考过220题,覆盖8个考试级别(2008-2026);逐年分布:2008年2题、2009年2题、2010年4题、2011年3题、2012年1题、2013年3题、2014年1题、2015年4题、2016年3题、2019年3题、2020年1题、2021年4题、2022年2题、2023年20题、2024年60题、2025年67题、2026年28题、null年12题;分赛事:GESP六级100题、GESP七级56题、GESP八级19题、NOIP普及组初赛14题、NOIP提高组初赛9题、CSP提高级8题、CSP入门级8题、GESP五级6题。二叉树遍历在题库共考过201题,覆盖8个考试级别(2007-2026);逐年分布:2007年2题、2008年2题、2010年2题、2011年2题、2012年2题、2013年1题、2015年2题、2019年1题、2021年2题、2022年1题、2023年19题、2024年58题、2025年67题、2026年28题、null年12题;分赛事:GESP六级100题、GESP七级56题、GESP八级19题、NOIP提高组初赛9题、GESP五级6题、NOIP普及组初赛4题、CSP提高级4题、CSP入门级3题。二叉树应用在题库共考过185题,覆盖5个考试级别(2009-2026);逐年分布:2009年1题、2010年3题、2023年18题、2024年57题、2025年66题、2026年28题、null年12题;分赛事:GESP六级100题、GESP七级56题、GESP八级19题、GESP五级6题、NOIP普及组初赛4题。二叉搜索树在题库共考过183题,覆盖6个考试级别(2013-2026);逐年分布:2013年1题、2023年18题、2024年57题、2025年67题、2026年28题、null年12题;分赛事:GESP六级100题、GESP七级56题、GESP八级19题、GESP五级6题、CSP提高级1题、NOIP提高组初赛1题。

预测:基于给定数据,GESP六级中二叉树相关题目占比很高(基础100题、遍历100题、应用100题、BST100题),说明命题人偏爱考查二叉树的各种实现细节和RAII思想。未来可能继续考析构函数是否必须、内存泄漏判断、以及结合RAII的构造函数设计。暂无足够依据预测具体题型变化,但RAII和析构函数的重要性只会更受重视。

同考点真题

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