GESP C++ 6级 2026.03
下列关于 C++ 中类的描述,正确的是( )。
如果类没有⽤户声明的构造函数,那么编译器会隐式声明⼀个默认构造函数
类的析构函数可以被重载,⼀个类可以有多个析构函数
类中的所有成员都必须声明为public
类和结构体在 C++ 中没有区别,包括默认访问权限也相同
下列代码中,s1->draw(); 和 s2->draw(); 输出不同结果的主要原因是( )。
class Shape {
public:
virtual void draw() {
cout draw();
s2->draw();
delete s1;
delete s2;
return 0;
}
draw() 是普通成员函数
Shape 中的 draw() 被声明为虚函数
Circle 和 Rectangle 中使用了 public 继承
指针变量名不同
下面的代码在 main() 中有一行会导致编译错误,请找出来。
class Pet {
public:
Pet(string n, int a) : name(n), age(a) {}
string getName() { return name; }
void birthday() { age++; }
private:
string name;
int age;
};
int main() {
Pet cat("奶茶", 2);
cout << cat.getName(); // ①
cat.birthday; // ②
cat.name = "大橘"; // ③
cout << cat.getName(); // ④
}
第 ① 行
第 ② 行
第 ③ 行
第 ④ 行
游乐园的过山车每次限坐 人,用循环队列管理排队(容量 ,空一格判满)。下面代码执行后,循环队列是否已满?rear 的值是多少?
const int MAX = 5;
int queue[MAX];
int front = 0, rear = 0;
// 入队
void enqueue(int x) {
queue[rear] = x;
rear = (rear + 1) % MAX;
}
// 出队
void dequeue() {
front = (front + 1) % MAX;
}
int main() {
enqueue(1);
enqueue(2);
enqueue(3);
enqueue(4);
dequeue();
dequeue();
enqueue(5);
enqueue(6);
}
已满,rear = 1
未满,rear = 1
已满,rear = 2
未满,rear = 4
在以下计算机系统应用场景中,最适合使用循环队列的是( )。
函数调用过程中,保存局部变量和返回地址
表达式求值中的运算符优先级处理
操作系统中的进程优先级调度(高优先级先执行)
生产者和消费者问题中的共享缓冲区
在二叉搜索树(BST)中,若中序遍历的序列为 ,且先序遍历的第一个序列元素为 ,则下列说法正确的是( )。
该树一定是一棵完全二叉树。
元素 和 不可能是兄弟节点。
元素 所在节点的深度可能大于 (根节点深度为 )。
元素 一定是元素 的父节点。
某二叉树共有 个结点,记为 ,已知它的先序遍历序列为:,中序遍历序列为:,则该二叉树的后序遍历序列是( )。
下列关于树的遍历的说法中,正确的一项是( )。
对任意一棵树进行深度优先遍历,所得序列一定唯一。
已知一棵二叉树的先序遍历和后序遍历序列,可以唯一确定这棵二叉树。
已知一棵二叉树的先序遍历和中序遍历序列,可以唯一确定这棵二叉树。
已知一棵二叉树的先序遍历序列,可以唯一确定这棵二叉树。
有 个字符,它们出现的次数分别为: ,现在用哈夫曼编码为这些字符编码,最小加权路径长度 (每个字符的出现次数 它的编码长度,再把每个字符结果加起来)的值为( )。
对 个不同符号的符号进行哈夫曼编码。若生成的哈夫曼树共有 个结点,则 的值是( )。
