c++题库文档格式.docx
《c++题库文档格式.docx》由会员分享,可在线阅读,更多相关《c++题库文档格式.docx(80页珍藏版)》请在冰点文库上搜索。
呵B.提高代码执行效率
C.减少代码量,增强代码可读性
D.隐藏内部实现
4•下列不是函数重载所要求的条件是()。
鼻A.函数名相同
*B.函数返回值类型不同
皿C.参数类型不同
D.参数个数不同
5.下列哪两个函数为重载函数()。
A.voida1(),voida2()
B.intb(intx),floatb(intx)
C.charc(doubley),charc(inty,doublez)
c
D.boold(doubley),boold(doubley,intx=0)
6.在面对对象方法中,实现信息隐蔽依靠的是()。
*A.对象的封装
pl
B.对象的继承
'
C.对象的多态
D.对象的分类
7.所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是()。
A.类
B.对象
财C.函数体
垃1D.数据块
8.下列关于类定义的说法中,正确的是()。
*A.在类里定义的函数为内联函数
B.类成员的默认访问权限是保护的
C.数据成员必须被声明为私有的
已D.成员函数只能在类体外进行定义
9.
关于类和对象不正确的说法是()。
C.friend
D.protected
11.类中定义的成员默认的访问属性为(
A.public
B.private
C.friend
D.protected
12.有关构造函数的叙述不正确的是(
F'
1
A.构造函数名必须和类名一致
B.构造函数在定义对象时自动执行
C.构造函数无任何函数类型
E
D.在一个类中构造函数有且仅有一个
13.
下列关于析构函数的描述中,错误的是()。
A.析构函数可以重载
B.析构函数由系统自动调用
C.每个对象的析构函数只被调用一次
Cl
D.每个类都有析构函数
14.
通常拷贝构造函数的参数是()。
r
仁
A.对象名
B.对象的成员名
C.对象的引用名
D.对象的指针名
15.
在类外定义成员函数时,需要在函数名前加上()。
A.类名
B.对象名
C囲
C.作用域运算符
D.类名和作用域运算符
16.
在类疋义中,为说明成员的访冋权限,private,protected,public可以出现次数()。
A.次数没有具体限制
厂.
厂
B.每种至多一次
剧C.public至少一次
炒D.每种至少一次
17.关于静态数据成员的描述中错误的是()。
A.类的静态数据成员是该类所有对象所共享的
耐B.类的静态数据成员在在该类每个对象中都保留一个备份
C.类的静态数据成员必须进行初始化
已D.类的静态数据成员可以不通过对象来访问
18.若一个类的数据成员用const关键字修饰,则该数据成员()。
A.静态函数中可以对该成员赋值
同B.构造函数只能通过初始化列表对该成员初始化
C.任何函数都不能使用该成员
因D.外部函数可以对该成员赋值
19.有两个类X和Y,且丫有一个构造函数Y:
:
Y(Xx);
那么以下语句:
Xa;
Yb(a);
不会调用下面的哪个函数()。
A.Y的构造函数Y(Xx)
口B.Y的拷贝(复制)构造函数
C.X的默认构造函数
D.X的拷贝(复制)构造函数
20.已知类A的定义。
假设x为A的对象,则在类外访问x对象中数据成员a和b分
别应采用()。
classA{
private:
inta;
public:
intgetValue(){
returna;
}
intb;
};
A.x:
getValue(),x:
b
B.x.a,x.b
皿C.x.a(),x.b()
D.x.getValue(),x.b
21•假设程序中先前已经定义了A、B、C三个类,他们的构造函数分别会输出Aconstructed、
Bconstructed和Cconstructed,那么又定义了类D,并在main函数中定义了一个D类的对象,部分代码如下:
classD{
D():
a(),b(),c(){}
Aa;
Bb;
Cc;
};
intmain(){
Dd;
return0;
程序的输出结果为()。
A.AconstructedBconstructedCconstructed
B.CconstructedBconstructedAconstructed
财C.编译错误
炒D.编译器决定
22.已知类CA中的某个成员是类CB的对象,若要把这两个类定义在同一个文件中,则()°
均A.CA必须定义在CB之前
诩B.CB必须定义在CA之前
心C.若CA定义在CB之后,则CA的声明必须出现在CB的定义之前
口D.若CB定义在CA之后,则CB的声明必须出现在CA的定义之前
23.在设计一个类的时候,如果希望允许一个不属于该类的函数访问该类的私有成员,应该使用哪个关键字()°
A.
public
关于友元函数的描述中,错误的是()。
A.友元函数是成员函数
B.友元函数能访问类中私有成员
C.友元函数破坏封装性
D.友元函数声明在类体内
如果类A是类B的友元,则()。
A.类A的成员是类B的成员
B.类B的成员是类A的成员
C.类A的成员函数可以访问类B的私有成员
D.类B是类A的友元
26.已知类A是类B的友元类,类B是类C的友元类,则()。
dA.类A一定是类C的友元
B.类C一定是类A的友兀
C.类C的成员函数可以访问类B的对象的任何成员
‘D.类A的成员函数可以访问类B的对象的任何成员
27.已知Point类含有无参(默认)构造函数和有参构造函数,使用Pointa[3]={Point(1,2),
Point(3,4),Point()};
时,调用了()次Point类的无参(默认)构造函数。
A.1
B.2
C.3
D.4
28.
要疋义一个引用变量p使之引用类MyClass的一个对象,正确的疋义语句是()。
A.MyClassp=MyClass;
QI
B.MyClassp=newMyClass;
C.MyClass&
p=newMyClass;
K
D.MyClassa,&
p=a;
29.
关于this指针的说法不正确的是()。
u
A.不能在程序中修改this指针
B.this指针可以给其他指针赋值,但不能修改this指针
C.静态成员函数中没有this指针
D.this指针可以被赋值
30.
关于C++的动态存储分配,下列说法正确的是()。
A.new和delete是C++语言中专门用于动态内存分配和释放的函数
B.动态分配的内存空间也可以被初始化
C.当系统内存不够时,会自动回收不再使用的内存单元,因此程序中不必用
delete释
放内存空间
D.当动态分配内存失败时,系统会立刻崩溃,因此一定要慎用
31.观察程序
#include<
iostream>
usingnamespacestd;
intmain(){
int*first,*second;
first=newint[5];
second=first;
delete[]second;
delete[]first;
该程序是否正确,原因是什么?
new
A.正确,因为first和second都是独立的指针变量
DB.不正确,因为first和second是相关而非独立的指针变量
C.正确,second会拷贝first的内容
D.不正确,second和first指向相同的内容
32.C++中,不能被派生类继承的有()。
A.析构函数
B.虚函数
C.静态成员函数
D.友元函数
F列关于派生类的叙述中,错误的是(
)。
财A.派生类至少要有一个基类
炒B.派生类中包括了从基类继承的成员
炒C.一个派生类可以作为另一个派生类的基类
*D.基类成员被派生类继承以后访问权限保持不变
34.下列关于类型转换正确的是()。
A.基类的对象可以被当作公有派生类对象使用
因B.派生类对象必须显式的转换为基类对象
*C.派生类对象可以初始化基类的引用
㈡D.基类的指针可以隐含转换为派生类的指针
35.下列关于虚基类的描述中,错误的是()。
A.使用虚基类可以消除由多继承产生的二义性
已B.构造派生类对象时,虚基类的构造函数只被调用一次
C.声明“classB:
virtualpublicA说明类B为虚基类
©
D.建立派生类对象时,首先调用虚基类的构造函数
36.以下说法正确的是()。
冈A.同一个运算符可以被重载多次
B.可以通过运算符重载来创建C++中原来没有的运算符
C.自增运算符重载时,重载函数不允许有输入参数
D.运算符函数的返回类型不能声明为基本数据类型
37.若A是一个类名,则如下语句将会产生的A对象个数为()。
Aa1,*a2;
A*a3=newA();
A&
a4=a1;
C.3
诃D.4
38.类C2是类C1的派生类,下列说法中错误的是(
A.C1的成员都是C2的成员
因B.C2的对象可以赋值给C1的变量
*C.C1的友元函数都是C2的友元函数
D.创建C2的对象时,要执行C1的构造函数
39.若类A和类B都是类模板T的模板类,则以下说法正确的是()。
A.A的友元函数中,可以访问B的私有成员
心B.A的对象可以赋值给B类型的变量
◎C.A和B共享T的静态成员变量
*D.A的成员函数中,不能访问B的私有成员
40.若类B是从类A派生而来,而语句p.Do();
在被多次执行时,有的时候调用的是类Do成员函数,有的时候调用的是类B的Do成员函数,那么p的类型可以是()
A.A&
B.A*
D.A
41.
将一个对象放入STL中的容器里时,
B.实际上被放入的是该对象的指针
C.实际上被放入的是该对象的引用
垃1D.实际上被放入的就是该对象自身
42.以下说法正确的是()。
诩A.在multiset容器中,可以同时存储多个相同的元素
垃!
B.在set容器中,各元素的存储位置取决于它们的插入顺序胡C.向deque容器添加新对象时,需要比较对象的大小因D.在list容器中,各元素的存储位置取决于它们的值
43.若有如下定义:
set<
int>
iteratorit1,it2,it3;
int>
s;
则以下语句不符合语法的是()。
因A.it1++;
B.--it2;
倒1
C.it3=it1+1;
D.boolisEnd=(it1==s.end());
44.关于函数对象,如下说法中正确的是()。
*A.如果一个类重载了“(运算符,该类的对象是函数对象
口B.如果一个类定义了函数指针成员变量,则该类的对象是函数对象
C.函数对象类中只能定义成员函数,不能定义成员变量
R
D.函数对象类只能定义一个函数对象
45.有如下两个类定义:
classAA{};
classBB{
AAv1,*v2;
BBv3;
ci
46.
2
3
4
5
6
7
8
9
10
11
12
口
47.
intv4;
其中有一个成员变量的定义是错误的,这个变量是(
A.v1
B.v2
C.v3
D.v4
对于如下代码,请指出错误的代码行号是()°
A(inta=0){
x=a;
staticvoidf1(){
x++;
int兀
staticinty;
A.3
B.4
C.7
D.11
对于如下代码
classB{
3voidf(){}
4voidg(){f();
}
5}
6classD:
publicB{
7public:
8voidf(){}
9voidg(){B:
f()}
10}
11intmain(){
12Bb,pb=&
b;
13Dd,pd=&
d;
14b.f();
15pd->
f();
16return0;
17}
其中第14行代码和第15行代码分别调用的是()。
A.B:
f()与D:
f()
B.B:
f()与B:
C.D:
D.D:
48.以下程序的输出结果是()。
A(inta1,inta2):
a1(a1),a2(a2){}
voidprint();
voidprint()const;
inta1,a2;
voidA:
print(){
cout<
<
al<
"
"
;
print()const{
a2<
Aa(1,2);
constAb(1,2);
a.print();
b.print();
return0;
A.11
因B.12
L3C.21
GD.22
49.有如下程序:
usingnamespacestd;
classA{private:
A(inta=0):
a(a){cout<
1"
A(A&
x){
a=x.a;
2"
~A(){
a;
intget_a(){
Ad1(5),d2(d1);
A*pd=newA(8);
pd_>
get_a();
deletepd;
程序运行时的输出结果是()。
因A.12185
B.1215588
」C.128512
何
D.1218855
50.有如下程序:
voidsetA(int);
voidsetB(int);
classC:
publicA,privateB{
voidsetC(int,int,int);
intc;
setA(intx){
a=x;
voidB:
setB(intx){
b=x;
voidC:
setC(intx,inty,intz){
setA(x);
setB(y);
c=z;
Cobj;
obj.setA(5);
//A
obj.setB(6);
//B
obj.setC(6,7,9);
//C
main函数中()是错误的。
A.A语句
劇B.B语句
□C.C语句
51.设置虚基类的目的是()。
A.区分类是否有虚函数
B.使类成为抽象类
JC.提高程序运行效率
冏D.消除二义性
52.运行时多态是基于()。
0A.友元函数
‘B.虚函数
C.函数重载
D.运算符重载
53.C++泛型编程通过()实现。
A.class
B.template
C]
C.virtual
D.
F列叙述正确的是()。
typedef
54.关于函数声明floatfun(inta,intb)throw,
IA.表明函数抛出float类型异常
炒B.表明函数抛出任何类型异常
呵C.表明函数不抛出任何类型异常
D.语法错误
55.有如下两个程序片段:
vector>
//程序片段一
std:
vector<
vec;
for(autoitr=vec.begin();
itr!
=vec.end();
itr++)
itr->
print();
//程序片段二
for(autoitr=vec.begin();
++itr)
则下列说法中,正确的有()。
(a)itr的类型为auto
(b)程序二性能上要比程序一更好
(c)程序一和程序二性能上没有区别
A.ab
-B.b
C.ac
D.c
56.如果X是整型变量,则合法的形式是()。
C
A.&
(X+1)
B.*X
C.*&
x
D.&
*X
57.判断以下程序的正确性,并说明原因。
#inelude<
intmain(){int*first,*second;
正确,因为first和second都指向动态内存,需要手动释放
不正确,second和first指向相同的动态内存,重复释放会可能导致未定义行为
58.C++中既可以用于文件输入又可以用于文件输出的流类是(
A.fstream
B.ifstream
C.ofstream
D.iostream
59.下列是关于函数模板的程序,则下列说法中正确的有(
#include<
template<
typenameT>
voidf(T&
i){cout<
>
voidf(constint&
inti=42;
f(i);
(a)程序输出1
(b)程序输出2
(c)
voidf(constint&
)
voidf(constint&
i)显式实例化
(d)f(i)隐式实例化函数voidf(int&
均A.ad
财B.bc
C.acd
D.bcd
60.下列程序的输出为()。
classShape{
virtualvoidprint(){
SHAPE"
<
endl;
virtual~Shape(){}
classBox:
publicShape{
virtualvoidprint(inti){
BOX"
Shape*s=newBox();
s->
deletes;
同A.SHAPE
—B.BOX
财C.未定义行为
1从完成C++源文件编辑,到生成执行文件,C++编译器必须执行的步骤依次为编译、链
接。
QA.对
B^
C++是强类型语言。
因A.对
3、如果a为int型变量,b为int型变量,则a/static_cast<
double>
(b)的值为int型。
述BE
4、数组可以通过值参数和