2025年9月计算机二级C++语言程序设计——选择题打卡Day9
备考计算机二级 C++ 程序设计考试,选择题是不容忽视的重要部分。
今天为大家带来 10 道难点选择题,聚焦易错知识点,助力突破薄弱环节。
1、有如下程序:
#include<iostream>
using namespace std;
class Base {
public:virtual void func() { cout<<"Base"; }
};
class Derived : public Base {
public:void func(int x) { cout<<"Derived"; }
};
int main() {Base *p=new Derived;p->func();delete p;return 0;
}
运行时的输出结果是( )
A. Base
B. Derived
C. 无输出
D. 编译错误
答案:A
分析:Derived 的 func (int) 与 Base 的 func () 不是重写(参数不同),p->func () 调用基类版本,输出 Base,故选 A。
2、下列关于多态性的叙述中,错误的是( )
A. 多态性是指同名函数对应多种实现版本
B. 多态性分为编译时多态和运行时多态
C. 函数重载实现的是运行时多态
D. 虚函数实现的是运行时多态
答案:C
分析:函数重载是编译时多态(静态多态),C 选项错误;A、B、D 均正确,故选 C。
3、有如下程序:
#include<iostream>
using namespace std;
class A {
public:A() { cout<<"A"; }A(A&) { cout<<"A&"; }
};
class B : public A {
public:B() { cout<<"B"; }B(B&) { cout<<"B&"; }
};
int main() {B b1;B b2(b1);return 0;
}
运行时的输出结果是( )
A. ABAB&
B. ABA&B&
C. ABB&
D. ABBA&
答案:B
分析:创建 b1:A 构造(A)→B 构造(B);b2 (b1):A 拷贝构造(A&)→B 拷贝构造(B&),输出 ABA&B&,故选 B。
4、下列关于虚析构函数的叙述中,正确的是( )
A. 虚析构函数可以避免内存泄漏
B. 基类的析构函数必须是虚函数
C. 派生类的析构函数必须是虚函数
D. 虚析构函数不能有参数
答案:A
分析:虚析构函数确保删除基类指针时调用派生类析构,避免内存泄漏,A 正确;B、C 错误(非必须);D 正确但不是核心作用,故选 A。
5、有如下程序:
#include<iostream>
using namespace std;
template <class T>
T sum(T *a, int n) {T s=0;for(int i=0;i<n;i++) s+=a[i];return s;
}
int main() {int a[5]={1,2,3,4,5};cout<<sum(a,5)<<endl;return 0;
}
运行时的输出结果是( )
A. 15
B. 0
C. 编译错误
D. 不确定
答案:A
分析:模板函数 sum 计算数组和,1+2+3+4+5=15,故选 A。
6、下列关于异常处理的叙述中,正确的是( )
A. try 块中可以抛出任何类型的异常
B. 一个 try 块只能对应一个 catch 块
C. catch 块必须放在 try 块之前
D. 异常处理机制会自动释放动态分配的内存
答案:A
分析:try 块可抛出任何类型异常,A 正确;一个 try 可对应多个 catch,B 错误;catch 在 try 之后,C 错误;需手动释放内存,D 错误,故选 A。
7、有如下程序:
#include<iostream>
using namespace std;
class MyClass {
public:int x;MyClass(int a) : x(a) {}MyClass operator+(MyClass &b) {return MyClass(x + b.x);}
};
int main() {MyClass obj1(10), obj2(20);MyClass obj3 = obj1 + obj2;cout<<obj3.x<<endl;return 0;
}
运行时的输出结果是( )
A. 30
B. 20
C. 10
D. 0
答案:A
分析:重载 + 运算符实现对象成员相加,10+20=30,故选 A。
8、下列关于静态数据成员的叙述中,正确的是( )
A. 静态数据成员不能被类的对象访问
B. 静态数据成员不属于某个具体的对象
C. 静态数据成员不能被继承
D. 静态数据成员的类型可以是该类的类型
答案:B
分析:静态数据成员属于类,为所有对象共享,B 正确;A 错误(可通过对象或类名访问);C 错误(可继承);D 错误(不完整类型),故选 B。
9、有如下程序:
#include<iostream>
using namespace std;
int &f(int &x) {x++;return x;
}
int main() {int a=1;f(a)=10;cout<<a<<endl;return 0;
}
运行时的输出结果是( )
A. 1
B. 2
C. 10
D. 11
答案:C
分析:f 函数返回 a 的引用,f (a)=10 等价于 a=10,输出 10,故选 C。
10、下列关于模板实参推断的叙述中,正确的是( )
A. 模板实参推断是指编译器根据实参自动确定模板形参的类型
B. 所有模板实参都必须显式指定
C. 模板实参推断适用于类模板和函数模板
D. 模板实参推断可以推断出默认参数
答案:A
分析:模板实参推断是编译器根据实参确定模板形参类型,A 正确;可省略部分实参,B 错误;仅适用于函数模板,C 错误;不能推断默认参数,D 错误,故选 A。
希望这 10 道题能帮助大家对 C++ 难点知识点有更深入的理解和掌握。如果想要获取完整版 PDF(含二级更多题目题库)
夸克网盘分享