点击查看:2018年9月计算机二级C++考前基础练习题及答案汇总
1.生成派生类对象时,派生类构造函数调用基类构造函数的条件是( )。
A.无需任何条件
B.基类中显式定义了构造函数
C.派生类中显式定义了构造函数
D.派生类构造函数明确调用了基类构造函数
2.下列关于派生类和基类的描述中,正确的是( )。
A.派生类成员函数只能访问基类的公有成员
B.派生类成员函数只能访问基类的公有和保护成员
C.派生类成员函数可以访问基类的所有成员
D.派生类对基类的默认继承方式是公有继承
3.有如下类模板定义:
template
classBigNumber{
longn;
public;
BigNumber(Ti):n(i){}
BigNumberoperator+(BigNumberb){
returnBigNumber(n+b.n):
}
};
已知b1、b2是BigNumber的两个对象,则下列表达式中错误的是( )。
A.b1+b2
B.b1+3
C.3+b1
D.3+3
4.下列关于文件流的描述中,正确的是( )。
A.文件流只能完成针对磁盘文件的输入、输出
B.建立一个文件流对象时,必须同时打开一个文件
C.若输入流要打开的文件不存在。将建立一个新文件
D.若输出流要打开的文件不存在,将建立一个新文件
5.有如下程序:
#include
usingnamespacestd;
classPair{
intm,n;
public;
Pair(intj,intk):m(j),n(k){}
intget( ){returnIn;}
intget( )const{returnm+n;}
};
intmain( ){
Paira(3,5);
constPairb(3,5);
cout
}
运行时的输出结果是( )。
A.33
B.38
C.83
D.88
6.下列叙述中正确的是( )。
A.全局变量的作用域一定比局部变量的作用域范围大
B.静态类别变量的生存期贯穿于整个程序的运行期间
C.函数的形参都属于全局变量
D.未在定义语句中赋初值的aut0变量和static变量的初值都是随机值
7.假定MyClass为一个类,则执行MyClassa,b(2),*p;语句时,自动调用该类构造函数( )次。
A.2
B.3
C.4
D.5
8.能正确表示逻辑关系”a≥10或a≤0”的C++语言表达式是( )。
A.a>=10ora<=0
B.a)一01a(一10
C.a>=10&&a<=0
D.a>=10||a(=0
9.若执行下面的程序时,从键盘上输入5和2,则输出结果是( )。
#include(iostream.h)
voidmain( )
(inta,b,k;
cin>>a>>b;
k=a:
if(ak=a%b;
else
k=b%a:
cout((k
B.3
C.2
D.0
10.假定MyClass为一个类,那么下列的函数说明中,( )为该类的析构函数。
A.void~MyClass( );
B.~MyC|ass(intn);
C.MyClass( );
D.~MyClass( );
参考答案:
1.D。【解析】派生类的构造函数必须通过调用基类的构造函数来初始化基类子对象。所以在定义派生类的构造函数时,除了对自己的类据成员进行初始化外,还必须负责调用基类构造函数,使基类的数据成员得以初始化。
2.B。【解析】派生类成员函数不能访问基类的private成员,只能由基类的对象来访问。这才体现了C++的数据封装特性。
3.C。【解析】该题考查了C++模板类和+运算符重载的知识,3+b1时,程序不能将b1转化为整型,所以编译会出错。
4.C。【解析】输入流要打开的文件不存在,则会自动建立该文件,而输出流要打开的文件不存在,则会报错,而不会新建一个文件。
5.B。【解析】const函数只能被const对象调用,a.get()函数调用返回值是3,而b.get()调用的返回值是8。
6.B。【解析】本题考查的是变量的作用域及其生存周期。一个全局变量的生存周期从它被声明开始,直到程序结束;一个局部变量的生存周期从它被声明开始,直到包含它的最近的一个程序块结束。静态变量的生存周期将延续到整个程序的终止。
7.A。【解析】C++在创建一个对象时,会调用类的构造函数。执行MyClassab,(2),*P;创建了两个对象a、b和指针P,在创建对象a和b会调用构造函数,而创建指针P时,由于P本身不是对象,所以不调用类的构造函数。
8.D。【解析】逻辑运算符“‖”表示或的意思。
9.C。【解析】本题考查简单的if…else语句。先执行条件if(a
10.D。【解析】C++语言中析构函数为符号“~”加类名,且析构函数没有返回值和参数,故前不加void关键字。所以正确的形式应该是~MyClass()。
微信搜索"考试吧"了解更多考试资讯、下载备考资料
相关推荐: