GESP2026年3月认证C++六级真题与解析(单选题1-8)



一、第1题 类(Class)的基础知识

题目:

下列关于 C++ 中类的描述,正确的是( )

A. 如果类没有用户声明的构造函数,那么编译器会隐式声明一个默认构造函数

B. 类的析构函数可以被重载,一个类可以有多个析构函数

C. 类中的所有成员都必须声明为 public

D. 类和结构体在 C++ 中没有区别,包括默认访问权限也相同
答案:A


1、第一步:什么是构造函数?

(1)想象:

你开了一家宠物店。

复制代码
class Dog
{
};

(2)当你写:

复制代码
Dog d;

系统需要创建一个小狗对象。


(3)那么问题来了:

谁来负责"出生"这只小狗?


(4)答案:

构造函数。


2、第二步:如果你没写构造函数怎么办?

(1)例如:

复制代码
class Dog
{
};

里面啥都没有。


(2)此时:

复制代码
Dog d;

仍然能运行。

为什么?


(3)因为编译器偷偷帮你补了一个:

复制代码
Dog()
{
}

(4)这就叫:

默认构造函数

所以 A 正确。


3、为什么B错?

析构函数负责对象死亡。

(1)格式固定:

复制代码
~Dog()
{
}

一个类只能有一个析构函数。


(2)不能写:

复制代码
~Dog();
~Dog(int x);

(3)所以不能重载。

B错误。


4、为什么C错?

(1)类成员可以:

复制代码
public:
private:
protected:

(2)例如:

复制代码
class Dog
{
private:
    int age;
};

完全合法。

所以 C 错。


5、为什么D错?

有的同学容易掉坑。

(1)看:

复制代码
class Dog
{
    int age;
};

默认是:

复制代码
private

(2)而:

复制代码
struct Dog
{
    int age;
};

默认是:

复制代码
public

(3)所以 class 和 struct 不是完全一样。

D错误。


6、本题总结

记住一句口诀:

不写构造编译器补,

析构只能有一个,

类默认 private,

结构体默认 public。



二、第2题 多态(虚函数)

答案:B


1、题目现象

(1)代码:

复制代码
Shape* s1 = new Circle();
Shape* s2 = new Rectangle();

s1->draw();
s2->draw();

(2)输出:

复制代码
绘制圆形
绘制矩形

为什么?


2、故事理解

(1)有三个角色:

Shape(图形爸爸)

Circle(圆形儿子)

Rectangle(矩形儿子)


(2)爸爸说:

复制代码
virtual void draw()
{
}

virtual 表示:

以后谁来调用,就听对象自己的。


(3)例如:

复制代码
Shape* p = new Circle();

虽然 p 的类型是 Shape*

但实际指向:

复制代码
Circle

于是:

复制代码
p->draw();

调用:

复制代码
Circle::draw()

(4)这就叫:

多态

同一句命令:

复制代码
draw();

不同对象执行不同动作。


3、为什么是B?

因为:

复制代码
virtual void draw()

被声明成了虚函数。

这才产生多态。

所以选 B。



三、第3题 哪一行会编译错误?

答案:C(第③行)


1、代码:

复制代码
private:
    string name;

(1)说明:

复制代码
name

是私有成员。


(2)外面写:

复制代码
cat.name = "大橘";

等于:

偷偷闯进别人家保险柜。


(3)编译器立刻阻止:

复制代码
error

2、生活例子

(1)小猫对象:

复制代码
Pet cat;

(2)内部:

复制代码
private:
    string name;

(3)相当于:

小猫的日记本。


(4)外面的人:

复制代码
cat.name

不能直接翻。


(5)必须通过:

复制代码
getName()

或者:

复制代码
setName()

访问。


(6)所以:

③报错。

选C。



四、第4题 循环队列

答案:A


这一题非常经典。


1、先理解队列

(1)队列像买奶茶,先来的先买:

复制代码
1 2 3 4
↑
front

(2)容量:

复制代码
MAX=5

采用:

复制代码
空一格判满

所以实际上:

最多存4个元素。


2、初始

复制代码
front=0
rear=0

3、入队4次

复制代码
enqueue(1)
enqueue(2)
enqueue(3)
enqueue(4)

变成:

复制代码
[1][2][3][4][ ]

此时:

复制代码
front=0
rear=4

4、出队两次

删掉:

复制代码
1
2

得到:

复制代码
[ ][ ][3][4][ ]

位置:

复制代码
front=2
rear=4

5、再入队

加入5:

复制代码
rear=(4+1)%5=0

加入6:

复制代码
rear=(0+1)%5=1

最终:

复制代码
front=2
rear=1

6、判断是否满:

公式:

复制代码
(rear+1)%MAX==front

代入:

复制代码
(1+1)%5=2

成立。


7、所以:

队列已满。

复制代码
rear=1

答案A。



五、第5题 循环队列应用

答案:D


1、生产者、消费者问题

想象:

(1)妈妈不断做包子。

复制代码
生产者

(2)顾客不断吃包子。

复制代码
消费者

(3)桌子容量有限:

复制代码
[ ][ ][ ][ ]

(4)吃完的位置还能继续放。

这正是:

循环利用空间。

所以:

循环队列最适合。


2、其它选项

A

函数调用

用栈。


B

表达式求值

也是栈。


C

优先级调度

一般用优先队列。


所以 D 正确。



六、第6题 BST(二叉搜索树)

答案:B


1、已知:

中序:

复制代码
1 2 3 4 5

根:

复制代码
3

2、BST有个超级重要性质:

中序遍历一定升序

所以:

复制代码
      3
    /   \
 1,2    4,5

3、为什么B正确?

4和5不可能是兄弟。

(1)因为 BST 中:

复制代码
4
 \
  5

(2)或者

复制代码
 5
/
4

(3)一定是祖先和孩子关系。

不会共同拥有一个父亲。

所以 B 正确。


4、反例

(1)如果:

复制代码
  X
 / \
4   5

(2)那么:

X 必须:

复制代码
4 < X < 5

(3)只能是:

复制代码
4.5

(4)但树里没有这个数。

因此不可能。



七、第7题 先序+中序求后序

答案:A


1、这是树的经典题。

(1)先序:

复制代码
A B D H I E C F J G

(2)中序:

复制代码
H D I B E A F J C G

2、第一步 找根

(1)先序第一个:

复制代码
A

(2)所以:

复制代码
A

是根。


3、第二步 分左右子树

(1)中序:

复制代码
H D I B E | A | F J C G

(2)左边:

复制代码
H D I B E

(3)右边:

复制代码
F J C G

(4)继续递归拆。

最终得到树。


(5)后序:

规则:

复制代码
左
右
根

(6)结果:

复制代码
H I D E B J F G C A

答案A。


4、考试技巧

看到:

复制代码
先序 + 中序

立刻想到:

能唯一建树。

然后:

求后序。



八、第8题 树遍历知识

答案:C


1、为什么C对?

已知:

(1)先序

复制代码
根 左 右

(2)中序

复制代码
左 根 右

(3)两个序列一起:

能够唯一还原二叉树。

这是数据结构经典结论。


2、为什么B错?

先序+后序:

很多时候不唯一。

(1)例如:

复制代码
  1
 /
2

复制代码
1
 \
  2

(2)先序:

复制代码
1 2

(3)后序:

复制代码
2 1

(4)两个树,先序+后序:完全一样。


却是两棵不同的树。


3、为什么D错?

只有先序:

可能有无数棵树。

不能唯一确定。


4、为什么A错?

(1)普通树 DFS 时:

孩子访问顺序不同,

结果也不同。


(2)例如:

复制代码
A
├B
└C

可以:

复制代码
A B C

也可以:

复制代码
A C B

所以不唯一。


第一部分1~8题知识总结

这8题考查了六级核心的内容:

题号 知识点
1 类、构造函数、析构函数
2 虚函数、多态
3 private封装
4 循环队列
5 队列应用
6 BST性质
7 先序+中序还原二叉树
8 树遍历唯一性

相关推荐
a诠释淡然1 小时前
C++模板元编程—现代C++的黑魔法
开发语言·c++
charlie1145141911 小时前
现代C++工程:constexpr 基础:编译期求值的艺术
开发语言·c++
小欣加油1 小时前
leetcode121买卖股票的最佳时机
数据结构·c++·算法·leetcode·职场和发展
牛油果子哥q2 小时前
【C++运算符重载】C++运算符重载终极精讲:单目/双目/关系/赋值运算符重载、成员与全局重载、重载禁区、底层原理与企业级工程规范
开发语言·c++
2601_961845152 小时前
2026四级作文预测题|英语四级写作押题+提纲PDF
java·c语言·数据库·c++·python·pdf·php
郝亚军2 小时前
Visual Studio 2022项目中的.sln是什么?
c++·c#·visual studio
暖阳华笺2 小时前
【高频考点】K-Means聚类算法
c++·算法·机器学习·kmeans·聚类
j7~2 小时前
【C++】模板初阶--函数模板,类模板详解
数据结构·c++·算法·函数模板·类模板·函数模板实例化
吴梓穆2 小时前
UE5 C++ 注册 开始重叠和结束重叠事件
开发语言·c++·ue5