C++考试题库及答案Word下载.docx
《C++考试题库及答案Word下载.docx》由会员分享,可在线阅读,更多相关《C++考试题库及答案Word下载.docx(37页珍藏版)》请在冰点文库上搜索。
A1.*p=5;
A1->
p=5;
A1.p=5;
C++异常处理机制中没有________。
finally
try
throw
catch
所谓多态性是指________。
一个对象调用不同名称的对象
一个对象调用不同名称的函数
不同的对象调用相同名称的函数
不同的对象调用不同名称的函数
关于new运算符的下列描述中,________是错的。
使用它创建对象数组时必须指定初始值
它可以用来动态创建对象和对象数组
使用它创建对象时要调用构造函数
使用它创建的对象和对象数组可以使用运算符delete删除
以下正确的说法是:
在C++语言中进行值传递时________。
形参是虚拟的,不占用存储单元
实参和与其对应的形参各占用独立的存储单元
只有当实参和与其对应的形参同名时才共占用存储单元
实参和与其对应的形参共占用一个存储单元
C++类体系中,能被派生类继承的是________。
友元函数
析构函数
构造函数
虚函数
对于重载的运算符>
它是一个________。
用于输出的成员函数
用于输入的友元函数
用于输入的成员函数
用于输出的友元函数
_______是一个在基类中说明的虚函数,它在该基类中没有定义,但要求任何派生类都必须定义自己的版本。
静态成员函数
纯虚函数
虚析构函数
虚构造函数
定义重载函数的下列要求中,________是错误的。
要求函数的返回值不同
要求参数个数相同时,参数类型不同
要求参数中至少有一个类型不同
要求参数的个数不同
可以通过友元函数重载的运算符为________。
()
=
[]
在下列运算符中,不能重载的是________。
delete
sizeof
!
new
下列运算符中,________运算符在C++语言中不能重载。
+=
:
不能被重载的运算符1、.(成员访问运算符)2、.*(成员指针访问运算符)3、:
(域运算符)4、sizeof(长度运算符)5、?
(条件运算符)
下列运算符中,只能作为类成员函数重载的是________。
++
+
类MyA的拷贝初始化构造函数是________。
MyA(MyA)
MyA(MyA&
MyA(MyA*)
MyA();
用cin为整型变量输入数据时,如果从键盘输入的不是数字,输入后整型变量中的结果会是:
________(2.0分)
不确定
正数
负数
在C++语言中,引用数组元素时,其数组下标的数据类型允许是________。
任何类型的表达式
整型表达式
整型常量或整型表达式
整型常量
关于类模板描述不正确的是________。
根据它可以定义多个对象
它的存在不代表一个具体的、实际的类,而是代表一类的类
它可以使类中的某些数据取任意类型
根据它可以产生一系列类
下列说法不正确的是________。
不同函数中,可以使用相同名字的变量
在一个函数内部,可以在复合语句中定义变量,这些变量只在复合语句中有效
形式参数是局部变量
主函数main中定义的变量在整个文件或程序中有效
建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序依次为________的构造函数。
基类、自己所属类、对象成员所属类
对象成员所属类、基类、自己所属类
自己所属类、对象成员所属类、基类
基类、对象成员所属类、自己所属类
关于运算符重载,下列表述中正确的是________。
可以通过运算符重载来创建C++中原来没有的运算符
在类型转换函数的定义中不需要声明返回类型
运算符函数的返回类型不能声明为基本数据类型
C++已有的任何运算符都可以重载
下列关于运算符重载不正确的是________。
运算符重载不能改变运算符的优先级
运算符重载能改变对预定义类型数据的操作方式
运算符重载不能改变运算符的结合性
运算符重载不能改变运算符的操作数个数
在表达式x+y*z中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。
下列叙述中正确的是________。
operator+有两个参数,operator*有一个参数
operator+有两个参数,operator*有两个参数
operator+有一个参数,operator*有两个参数
operator+有一个参数,operator*有一个参数
+和*都是二元运算符,当作为成员函数重载时,参数表中只有一个参数,对应于第二个参数,而第一个操作数就是对象本身,仅以this指针的形式隐藏在参数表中.当作为非成员函数重载时有两个参数。
以下叙述中正确的是________。
静态(static)类别变量的生存期贯穿于整个程序的运行期间
函数的形参都属于全局变量
未在定义语句中赋初值的auto变量和static变量的初值都是随机值
全局变量的作用域一定比局部变量的作用域范围大
在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是________。
派生类的对象的地址可以赋给指向基类的指针
派生类的对象可以初始化基类的引用
派生类的对象可以直接访问基类中的成员
派生类的对象可以赋给基类的对象
不能作为重载函数的调用的依据是________。
函数名称
参数类型
参数个数
函数类型
若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是________。
函数调用可以作为一个函数的形参
函数调用可以出现在表达式中
函数调用可以作为独立的语句存在
函数调用可以作为一个函数的实参
在有参函数调用中,是将主调函数的实参值传给被调函数的形参。
按函数在程序中出现的位置来分,有以下三种函数调用形式:
①函数调用作为一条语句。
例如:
fun();
这时不要求函数带回值,只要求函数完成一定的操作。
故选项A)正确。
②函数出现在表达式中,这种表达式称为函数表达式。
这时要求函数带回一个确定的值以参加表达式的运算。
c=5*max(a,b);
函数max是表达式的一部分,将其值乘以5后赋给c。
故选项C)正确。
③函数调用作为一个函数的实参,例如:
m=max(a,max(b,c));
其中max(b,c)是一次函数调用,它的值作为max另一次调用的实参。
故选项B)正确。
函数调用不可作为一个函数的形参,因为函数调用参数的数据传递是单向传递,即实参传给形参,不能由形参传给实参。
故选项A)错误。
如果a=1,b=2,c=3,d=4,执行表达式a>
b?
a:
c<
d?
c:
d后的结果是________。
(2.0分)
4
3
2
1
若i为整型变量,则以下循环执行次数是________。
for(i=2;
i==0;
)cout<
i--;
2次
无限次
1次
0次
设"
char**s;
"
以下正确的表达式是________。
*s='
s'
;
**s="
software"
s="
*s="
下列程序段的输出结果为________。
#include
voidmain(){chars[]="
123"
*p;
p=s;
cout<
*p++<
endl;
}(2.0分)
123
321
如果有如下语句charstr[20];
cin>
str;
cout<
执行时输入的是“thisisatestline!
”,则输出的内容是________。
this
thisisatestline!
thisisatestline
thisisatest
cin流遇空白符号结束,因而只会读入第一个单词this,输出this
关于析构函数的特征,正确的是________。
析构函数和构造函数都可重载
析构函数必须将指针类型的数据成员的值置未NULL
析构函数不能有参数
析构函数的返回值必须为void
析构函数没有数据类型,也没有参数,没有返回值,一个类只能有一个析构函数。
下列关于虚函数的说明中,正确的是________。
抽象类中的成员函数都是虚函数
虚函数不得是静态成员函数
只能通过指针或引用调用虚函数
从虚基类继承的函数都是虚函数
下列关于成员函数的描述中,正确的是________。
成员函数可以有默认参数
成员函数一定是内联函数
成员函数没有返回值
成员函数可以通过类名直接调用
函数的形参是________。
外部变量
局部变量
全局变量
静态变量
在那种情况下不需要使用初始化列表________。
类数据成员
初始化常量数据成员
普通的数据成员
调用基类的构造函数
在C++语言中,char型数据在内存中的存储形式是________。
反码
补码
原码
ASCII码
________不是构造函数的特征。
构造函数可以重载
构造函数必须指定类型说明
构造函数可以设置缺省参数
构造函数的函数名与类名相同
关于纯虚函数和抽象类的描述,错误的是________(2.0分)
抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出
纯虚函数是一种特殊的函数,它没有具体实现代码
一个基类中声明有纯虚函数,该基类的派生类一定不再是抽象类
抽象类是指具有纯虚函数的类
如果在派生类中没有对纯虚函数进行了定义,那这个派生类也是抽象类.不能用来定义对象
下列对派生类的描述中,________是错误的。
派生类中继承的基类成员的访问权限到派生类保持不变
一个派生类可以作为另一个派生类的基类
派生类至少有一个基类
派生类的成员除了它自己的成员外,还包含了它的基类成员
关于关键字class和typename,下列表述正确的是________。
程序中所有的typename都可以替换为class
程序中所有的class都可以替换为typename
A)和B)都可以
A)和B)都不可以
类A中一个成员函数说明如下:
voidSet(A&
a);
其中,A&
的含义是________。
将a的地址值赋给变量Set
a是类A对象的引用,用来作函数Set()的参数
变量A与a按位与作为函数Set()的参数
指向类A的指针为a
关于this指针使用说法正确的是________。
保证基类私有成员在子类可以被访问
保证基类共有成员在子类可以被访问
保证每个对象都拥有自己的数据成员,但共享处理这些数据的代码
保证基类保护成员在子类可以被访问
下列函数中,不能重载运算符的函数是________。
成员函数
普通函数
下列关于运算符重载的叙述中,正确的是________。
重载一个二元运算符时,必须声明两个形参
有的运算符只能作为成员函数重载
通过运算符重载,可以定义新的运算符
若重载运算符+,则相应的运算符函数名是+
当一个类的某个函数被说明为virtual时,该函数在该类的所有派生类中________。
都不是虚函数
只有被重新说明时才是虚函数
只有被重新说明为virtual时才是虚函数
都是虚函数
拷贝构造函数的参数是________。
某个对象的指针名
某个对象名
某个对象的成员名
某个对象的引用名
下列不是描述类的成员函数的是________。
拷贝构造函数
设intx=1,y=1;
表达式(!
x||y--)的值是____1____。
执行语句inti=10;
i+++i++;
输出结果是________。
22
20
21
拷贝构造函数的参数通常是________。
无特殊要求
对象
指向对象的指针
自身类对象的常引用
以下叙述中不正确的是________。
以下是正确的宏定义#defineIBM_PC
A选项,这样的宏定义运行时未报错,在使用时,就将其看做什么也没有,例如,intx=5;
printf("
numberis%d"
BM_DEFx);
预处理命令行都必须以#号开始
C++程序在执行过程中对预处理命令行进行处理
在程序中凡是以#号开始的语句行都是预处理命令行
关于在调用模板函数时模板实参的使用,下列表述中正确的是________。
对于常规参数所对应的模板实参,任何情况下都不能省略
对于虚拟类型参数所对应的模板实参,若能够省略则必须省略
对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略
对于虚拟类型参数所对应的模板实参,如果它是参数表中的最后的若干个参数,则都可以省略
在调用一个模板函数时,编译系统需要足够的信息来判别每个虚拟类型参数所对应的实际类型,可以从两个不同的渠道获得这样的信息:
从模板实参表(用“<>”括起来的参数表)或从模板函数实参表(用“()”括起来的参数表)。
如果从后者获得的信息已经能够判定其中部分或全部虚拟类型参数所对应的实际参数,而且它们又正好是参数表中最后的若干参数,则模板实参表中的那几个参数可以省略。
如果模板实参表中的实参都被省略了,则空表“<>”也可以不要,因此选项D错误。
反之,对于某个模板实参,如果从模板函数的实参表中无法获得同样的信息,就不能省略;
或者虽然能够获得同样的信息,但在它后面还有其他不能省略的实参,则其自身还是不能省略。
在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回值________。
部分相同
不同
相同
相容
一个C++程序的执行是从________.(2.0分)
本程序文件的第一个函数开始,到本程序main函数结束
本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
本程序的main函数开始,到本程序文件的最后一个函数结束
本程序的main函数开始,到main函数结束
以下对C++语言函数的描述中,正确的是________。
C++程序必须由一个或一个以上的函数组成
函数既可以嵌套定义又可以递归调用
函数必须有返回值,否则不能使用函数
C++程序中有调用关系的所有函数必须放在同一个程序文件中
下列关于友元函数描述,正确的是________。
在类的外部定义友元函数时必须加上friend关键字
一个友元函数不能同时定义为两个类的友元函数
友元函数是独立于当前类的外部函数
友元函数必须在类的外部进行定义
友元函数________。
不能修改数据成员的值
只能用对象名来调用
没有this指针
可以用类名或对象名来调用
已知类A是类B的友元,类B是类C的友元,则________。
类C的成员可以访问类B对象的任意成员
类A的成员函数可以访问类B对象的任意成员
类C一定是类A的友元
类A一定是类C的友元
关于类模板,下列描述错误的是________。
函数的类模板参数须通过构造函数实例化
根据建立对象时的实际数据类型,编译器把类模板实例化为模板类
类模板从普通类派生,也可以从类模板派生
一个普通基类不能派生类模板
在重载一个运算符时,如果其参数表中有一个参数,则该运算符是________。
选项B和C都有可能
二元成员运算符
一元友元运算符
一元成员运算符
重载一目运算符没有参数,重载二目运算符要有一个参数
已知在一个类体中包含如下函数原型:
VOLUMEoperator-(VOLUME)const;
下列关于这个函数的叙述中,错误的是________。
这是运算符-的重载运算符函数
这个函数所重载的运算符是一个一元运算符
这是一个成员函数
这个函数不改变数据成员的值
下列定义数组的语句中正确的是________。
#definesize10charstr1[size],str2[size+2];
charstr[];
intnum['
10'
];
intn=5;
inta[n][n+2];
所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是________。
数据块
类
函数体
下列函数模板的定义中,合法的是________。
templateTabs(Tx){returnx<
o?
-x:
x;
}
templateTabs(Tx){returnx<
0?
templateclassTabs(Tx){returnx<
templateTabs(Tx){returnx<
C++对C语言做了很多改进,即从面向过程变成为面向对象的主要原因是________。
允许函数重载,并允许函数设置缺省参数
规定函数说明符必须用原型
增加了一些新的运算符
引进了类与对象的概念
C++语言中函数调用的方式有________。
函数调用作为语句、函数表达式或函数参数三种
函数调用作为语句一种
函数调用作为语句或函数表达式两种
函数调用作为函数表达式一种
x||y--)的值是________。
-1
下面判断是否构成重载函数的条件中,错误的判断条件是________。
函数返回值不同
参数顺序不同
参数类型不同
参数个数不同
有如下类定义:
classXA{intx;
public:
XA(intn){x=n;
}};
classXB:
publicXA{inty;
XB(inta,intb);
};
在构造函数XB的下列定义中,正确的是________。
XB:
XB(inta,intb):
XA(a),XB(b){}