2C++资料.docx
《2C++资料.docx》由会员分享,可在线阅读,更多相关《2C++资料.docx(19页珍藏版)》请在冰豆网上搜索。
2C++资料
试卷题型:
1)单选题10个,20分
2)填空题20个,40分
3)简答题3个,15分
4)程序阅读题3个,15分
5)编程题1个,10分
一、选择题:
1)C++源程序文件的扩展名为(A)。
A.CPPB.CC.DLLD.EXE
2)下列C++标点符号中表示行注释开始的是(C)。
A.# B.;C.// D.}
3)在C++中,使用流进行输入输出,其中用于屏幕输入(A)
A.cin
B.cerr
C.cout
D.clog
4)每个C++程序都必须由且仅有一个(B)。
A.预处理命令B.主函数C.函数D.语句
5)已知:
intk=1000;下列表示引用的方法中,(B)是正确的。
A.char&y;B.int&x=k;C.int&z=1000;D.float&t=&k;
6)(B)是给对象取了一个别名,他引入了对象的同义词。
A.指针 B.引用 C.枚举 D.结构
7)一个函数功能不太复杂应选用(A)。
A.内联函数B.重载函数C.递归函数D.嵌套函数
8)考虑函数原型voidtest(inta,intb=7,charc=’*’),下面的函数调用中,属于不合法调用的是(C)。
A.test(5);B.test(5,8);C.test(6,"#")D.test(0,0,’*’);
9)适宜采用inline定义函数情况是(C)
A.函数体含有循环语句
B.函数体含有递归语句
C.函数代码少、频繁调用
D.函数代码多、不常调用
10)在C++中,关于下列设置参数默认值的描述中,正确的是(C)。
A.不允许设置参数的默认值
B.设置参数默认值只能在定义函数时设置
C.设置参数默认值时,应该实现设置右边的再设置左边的
D.设置参数默认值时,应该全部参数都设置
11)有如下定义:
constchar*ptr;则ptr应该是(C)
A.指向字符的指针B.指向字符的常量指针
C.指向字符串常量的指针D.指向字符串的常量指针
12)下面有关new和delete操作符的说法。
哪个是不正确的
选项A:
使用new操作符,可以动态分配全局堆中的内存资源
选项B:
若指针P的类型已由A强制转换为void*,那么执行语句deleteP时,类A的析构函数不会被调用。
选项C:
实现全局函数时,new和delete通常成对地出现在由一对匹配的花括号限定的语句块中。
选项D:
执行语句A*P=newA[100]时,类A的构造函数只会被调用一次。
试题答案:
D
13)下列有关重载函数的说法中正确的是
选项A:
重载函数必须具有不同的返回值类型
选项B:
重载函数参数个数必须相同
选项C:
重载函数必须有不同的形参列表
选项D:
重载函数名可以不同
试题答案:
C
14)对于下面的几个函数:
1.voidf(intx)(…)
2.intf(inty)(…)
3.intf(inti,intj)(…)
4.floctk(intx)(…)
是重载函数的是:
选项A:
4个全部
选项B:
1和4
选项C:
2和3
选项D:
3和4
试题答案:
C
15)不能作为函数重载判断依据的是(D)。
A.参数个数B.参数类型
C.函数名字D.函数的返回类型
16)C++中声明常量的关键字是(A)。
A.constB.externC.publicD.enum
17)与C语言printf(“Helloword\n”);语句功能相同的C++语句是(D)
选项A:
cout>>”Helloword\n”
选项B:
cin>>”Helloword\n”
选项C:
cout<<”Helloword\n”
选项D:
cin<<”Helloword\n”
18)关于类概念的描述中,(D)是错误的。
A.类是抽象数据类型的实现;
B.类是具有共同行为的若干对象的统一描述体;
C.类是创建对象的样板;
D.类不是C++中的一种数据类型;
19)以下关于C++中类的概念理解正确的是
选项A:
类作为一种数据类型,在定义时不分配任何内存
选项B:
类的成员要么是private的要么是public的
选项C:
在类中,如果没有显示指定成员的访问权限,则缺省的访问权限是public
选项D:
类对象与一般变量不同的是,在使用时无需初始化即可直接使用
试题答案:
A
20)当一个派生类私有继承一个基类时,基类中的所有保护成员成为派生类的()。
选项A:
public成员
选项B:
private成员
选项C:
protected成员
选项D:
友元
试题答案:
B
21)有关类的说法不正确的是(D)。
A.类是一种用户自定义的数据类型。
B.只有类中的成员函数才能存取类中的私有成员。
C.在类中,如果不做特别说明,所指的数据均为私有类型。
D.在类中,如果不做特别说明,所指的成员函数均为公有类型。
22)在下面几个元素中,不是面向对象的要素的是(A);
A.重载B.对象C.类D.继承
23)C++中,封装是借助于(B)达到的。
A.指针B.类C.数组D.函数
24)关于成员函数特征的下述描述中,(A)是错误的。
A.成员函数是内联函数;B.成员函数可以重载;
C.成员函数可以设置参数的缺省值;D.成员函数可以是静态的。
25)下面(D)是对类ttt的声明。
A.voidclassttt;
B.classintttt;
C.classttt();
D.classttt;
26)下列关于构造函数的描述中,错误的是
选项A:
构造函数可以设置默认的参数
选项B:
构造函数在定义类对象时自动执行
选项C:
构造函数可以是内联函数
选项D:
构造函数不可以重载
试题答案:
D
27)下面说法中正确的是( B)
A.一个类只能定义一个构造函数,但可以定义多个析构函数
B.一个类只能定义一个析构函数,但可以定义多个构造函数
C.构造函数与析构函数同名,知识名字前加了一个求反符号(~)
D.构造函数可以指定返回类型,而析构函数不能指定任何返回类型,即使是void类型也不可以
28)假定一个类的构造函数为A(intaa,intbb){a=aa--;b=a*bb;},则执行Ax(4,5);语句后,x.a和x.b的值分别为()
A.3和15
B.5和4
C.4和20
D.20和5
答案:
C
29)有关析构函数的说法不正确的是(B)
A.析构函数有且仅有一个
B.析构函数和构造函数一样可以有形参
C.析构函数的功能是用来释放一个对象
D.析构函数无任何函数类型
30)下列不能作为类的成员的是()
A.自身类对象的指针
B.自身类对象
C.自身类对象的引用
D.另一个类的对象
答案:
B
31)对于任意一个类,析构函数的个数最多为(B)。
A.0B.1C.2D.3
32)已知X类,则当程序执行到语句X array[3];时,调用了(D)次构造函数。
A.0B.1C.2D.3
33)假定AA为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为()
A.x.a
B.x.a()
C.x->a
D.(*x).a()
答案:
B
34)通常拷贝构造函数的参数表是(C)
A.当前对象名B.当前对象的成员名
C.当前对象的引用名D.当前对象的指针名
35)对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是(D)
A.公有类型B.私有类型C.保护类型D.友元类型
36)下面关于类和对象的描述中,错误的是(A)
A.类就是c语言中的结构体类型,对象就是C语言中的结构体变量
B.类和对象之间的关系是抽象和具体的关系
C.对象是类的实例,一个对象必须属于一个已知的类
D.类是具有共同行为的若干对象的统一描述体
37)假定AB为一个类,则该类的拷贝构造函数的声明语句为
选项A:
AB&(ABx)
选项B:
AB(ABx)
选项C:
AB(AB&)
选项D:
AB(AB*x)
试题答案:
C
38)在类定义的外部,可以被访问的成员有
选项A:
所有类成员
选项B:
private或protected的类成员
选项C:
public的类成员
选项D:
public或private的类成员
试题答案:
C
39)关于this指针的说法错误的是
选项A:
this指针必须显示说明
选项B:
当创建一个对象后,this指针就指向该对象
选项C:
成员函数拥有this指针
选项D:
静态成员函数不拥有this指针
试题答案:
A
40)声明一个类的对象时,系统自动调用构造函数,撤消对象时,系统自动调用()函数
选项A:
成员函数
选项B:
构造函数
选项C:
析构函数
选项D:
普通函数
试题答案:
C
41)下面对析构函数的正确描述是
选项A:
系统不能提供默认的析构函数
选项B:
析构函数必须由用户定义
选项C:
析构函数没有参数
选项D:
析构函数可以设置默认参数
试题答案:
C
42)对类的构造函数和析构函数描述正确的是(A)
A.构造函数可以重载,析构函数不能重载
B.构造函数不能重载,析构函数可以重载
c.构造函数可以重载,析构函数也可以重载
D.构造函数不能重载,析构函数也不能重载
43)56.下面对静态数据成员的描述中,正确的是(A)
A.静态数据成员是类的所有对象共享的数据
B.类的每个对象都有自己的静态数据成员
C.类的不同对象有不同的静态数据成员值
D.静态数据成员不能通过类的对象调用
44)59.下列说法正确的是(B)
A..内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方
B.内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方
C.类的内联函数必须在类体内定义
D.类的内联函数必须在类体外通过加关键字inline定义
45)下面对静态数据成员的描述中,正确的是(D)
A.静态数据成员可以在类体内进行初始化
B.静态数据成员不可以被类的对象调用
C.静态数据成员不能受private控制符的作用
D.静态数据成员可以直接用类名调用
46)对静态成员的不正确描述是
选项A:
静态成员不属于对象,是类的共享成员
选项B:
静态数据成员要在类外定义和初始化
选项C:
调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针
选项D:
非静态成员函数也可以操作静态数据成员
答案:
C
47)下面是关于静态成员的说法,其中不正确的是(D)。
A.静态成员有类作用域,但与普通非静态成员有所不同
B.静态函数没有this指针,同一个类的不同对象拥有相同的静态数据成员
C.静态数据成员的初始化必须在类外进行
D.静态函数同样可以直接访问非静态数据成员
48)下面函数(C)的表示方法说明它使用对象的引用作为参数。
A.test(pt*p)B.test(ptp)
C.test(pt&p)D.test(constP)
49)设有以下类的定义:
classEx
{intx;
public:
voidsetx(intt=0);
};
若在类外定义成员函数setx(),以下定义形式正确的是
选项A:
voidsetx(intt){…}
选项B:
voidEx:
:
setx(intt){…}
选项C:
Ex:
:
voidsetx(intt){…}
选项D:
voidsetx(){…}
试题答案:
B
50)以下对派生类的描述中不正确的是
选项A:
一个派生类可以作为另一个派生类的基类
选项B:
一个派生类可以有多个基类
选项C:
具有继承关系时,基类成员在派生类中的访问权限不变
选项D:
派生类的构造函数与基类的构造函数有成员初始化参数传递关系
试题答案:
C
51)在C++语言类体系中,不能被派生类继承的有(B)
A.转换函数B.构造函数C.虚函数D.静态成员函数
52)使用派生类的主要原因是(A)。
A.提高代码的可重用性B.提高程序的运行效率
C.加强类的封装性D.实现数据的隐藏
53)下列描述中,表达错误的是
选项A:
公有继承的基类中的public成员在派生类中仍是public的
选项B:
私有继承的基类中protected成员在派生类中仍是protected的
选项C:
公有继承的基类中的protected成员在派生类中仍protected的
选项D:
私有继承的基类中public成员在派生类中是private的
试题答案:
B
54)类C是以多重继承的方式从类A和类B继承而来的,类A和类B无公共的基类,那么
选项A:
类C的继承方式只能采用public继承
选项B:
类C中包含了类A和类B的成员。
选项C:
类A和类B至少有一个是抽象类。
选项D:
类A类B只少有一个是虚基类。
试题答案:
B
55)派生类的对象对它的基类成员中(A)是可以访问的。
A.公有继承的公有成员;B.公有继承的私有成员;
C.公有继承的保护成员;D.私有继承的公有成员
56)设有基类定义:
classcbase
{private:
inta;
protected:
intb;
public:
intc;
};
派生类采用何种继承方式可以使成员变量b成为自己的私有成员
选项A:
私有继承
选项B:
保护继承
选项C:
公有继承
选项D:
私有,保护,公有均行
试题答案:
A
57)假设ClassY:
publicX,即类Y是类X的派生类,则定义一个Y类的对象时和删除Y类对象时,调用构造函数和析构函数的次序分别为()
A.X,Y;Y,X
B.X,Y;X,Y
C.Y,X;X,Y
D.Y,X;Y,X
答案:
A
58)设有cbase为基类,cderived是cbase的派生类,且有以下定义:
cbasea1,*b1;
cderivedaa1,*bb1;
则以下语句不合语法的是
选项A:
b1=bb1
选项B:
a1=aa1
选项C:
b1=&aa1
选项D:
aa1=(cderived)a1
试题答案:
D
59)对基类和派生类的关系描述中,错误的是()
A.派生类是基类的具体化
B.基类继承了派生类的属性
C.派生类是基类定义的延续
D.派生类是基类的特殊化
答案:
B
60)下列描述中哪个是正确的?
(B)
A.私有派生的子类无法访问父类的成员
B.类A的私有派生子类的派生类C无法初始化其祖先类A对象的属性,因为类A的成员对类C是不可访问的
C.私有派生类不能作为基类派生子类
D.私有派生类的所有子孙类将无法继续继承该类的成员
61)在C++中,类与类之间的继承关系具有
选项A:
自反性
选项B:
对称性
选项C:
传递性
选项D:
反对称性
试题答案:
C
62)下列关于类的继承描述中,错误的是
选项A:
派生类可以访问基类的所有数据成员,也能调用基类的所有成员函数
选项B:
派生类也是基类,但基类不一定具有派生类的全部属性和方法
选项C:
继承描述类的层次关系,派生类可以具有与基类相同的属性和方法
选项D:
一个基类可以有多个派生类,一个派生类可以有多个基类
试题答案:
A
63)当不同的类具有相同的间接基类时,有如下特点
选项A:
各派生类对象将按继承路线产生自己的基类版本
选项B:
派生类对象无法产生自己的基类版本
选项C:
为了建立惟一的间接基类版本,在基类定义前加virtual即可
选项D:
为了建立惟一的间接基类版本,不必声明虚继承
试题答案:
A
64)在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是(C)
A.派生类的对象可以赋给基类的对象
B.派生类的对象可以初始化基类的引用
C.派生类的对象可以直接访问基类中的成员
D.派生类的对象的地址可以赋给指向基类的指针
65)下列关于虚基类的描述,错误的是(B)
A.设置虚基类的目的是为了消除二义性
B.虚基类的构造函数在非虚基类之后调用
C.若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用
D.若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数
66)关于动态联编的下列描述中,错误的是(D)。
A.动态联编是以虚函数为基础的
B.动态联编时在运行时确定所调用的函数代码的
C.动态联编调用函数操作是使用指向对象的指针或对象引用
D.动态联编是在编译时确定操作函数的
67)在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回值
选项A:
不同
选项B:
相同
选项C:
相容
选项D:
部分相同
试题答案:
B
68)若一个类中含有纯虚函数,则该类称为
选项A:
基类
选项B:
纯基类
选项C:
派生类
选项D:
抽象类
试题答案:
D
69)关于虚函数,正确的描述是(C)。
A.析构函数不能是虚函数B.虚函数可以是友元函数
C.构造函数不能是虚函数D.虚函数可以是静态成员函数
70)编译时的多态性通常使用(B)获得。
A.继承B.虚函数C.重载函数D.析构函数
71)要实现动态联编,派生类中的虚函数()。
A.返回的类型可以与虚函数的原型不同
B.参数个数可以与虚函数的原型不同
C.参数类型可以与虚函数的原型不同
D.以上都不对
72)所谓多态性是指()
A.不同的对象调用不同名称的函数
B.不同的对象调用相同名称的函数
C.一个对象调用不同名称的函数
D.一个对象调用不同名称的对象
答案:
B
73)下面关于虚函数的描述,错误的是(B)
A.在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数
B.基类中说明了虚函数后,派生类中对应的函数也必须说明为虚函数
C.虚函数可以是另一个类的友元函数,但不能是静态成员函数
D.基类中说明的纯虚函数在其任何派生类中都必须实现
74)虚函数的调用()。
一定使用动态联编
必须使用动态联编
一定使用静态联编
不一定使用动态联编
75)下面的说法中,不正确的一句是()。
A.类的友元函数是类的特殊成员函数,它对所有的类成员、保护成员和私有成员享有完全访问特权。
B.一个类的友元类中的成员函数都是这个类的友元函数
C.适用于类成员函数和数据的访问控制同样适用于枚举和嵌套类
D.与结构类似,类也可以互相嵌套,适用于嵌套结构的规则也适用于嵌套类
76)如果类A被说明成类B的友元,则(D)
A.类A的成员即类B的成员
B.类B的成员即类A的成员
C.类A的成员函数不得访问类B的成员
D.类B不一定是类A的友元
77)下面是关于一个类的友元的说法,其中不正确的是()
友元函数可以访问该类的私有数据成员
友元的声明必须放在类的内部
友元函数可以是类的成员函数
类与类之间的友元关系不能被继承
78)下列运算符中,()运算符在C++中不能重载。
A.?
:
B.+C.-D.<=
79)如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该运算符是(D)
A.一元运算符B.二元运算符
C.选项A)和选项B)都可能D.重载错误
80)下列运算符中,在C++语言中不能重载的是(C)
A.++B.>=C.:
:
D./
81)假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为
选项A:
ABoperator+(AB&a,AB&b)
选项B:
ABoperator+(AB&a)
选项C:
operator+(ABa)
选项D:
AB&operator+()
试题答案:
B
82)类A是类B的友元,类B是类C的友元,则()是正确的。
A.类B是类A的友元B.类C是类A的友元
C.类A是类C的友元 D.以上都不对
83)模板的使用是为了()。
A.提高代码的可重用性B.提高代码的运行效率
C.加强类的封装性D.实现多态性
84)类模板的使用实际上是类模板实例化成一个具体的()
A.类B.对象C.函数D.模板类
85)类模板的模板参数()
A.只可作为数据成员的类型B.只可作为成员函数的返回类型
C.只可作为成员函数的参数类型D.以上三者皆可
二、填空题或选择题需掌握的知识点
1)具有相同函数名但具有不同参数表的函数称为__重载函数_。
'
2)在一个C++程序中,每个变量都必须遵循_先定义后使用_的原则。
3)定义一个函数时,若只允许函数体访问形参的值而不允许修改它的值,则应把该形参声明为___常量___,即在该形参声明的前面加上___const___关键字进行修饰。
4)在一个函数的定义或声明前加上关键字___inline______时,该函数就声明为内联函数。
5)静态整型变量的默认初始值是___0___。
6)在撤销类的对象时,C++程序将自动调用该对象的___析构___函数。
7)类中的构造函数是一个特殊的成员函数,它由类的对象____自动_调用,它的作用是___为对象分配内存,数据成员初始化__。
8)对类中的成员函数和属性的访问是通过__public__、__protected__和___private__这3个关键字来控制的。
9)__delete__运算符删除new运算符所动态分配的内存空间。
10)假定用户没有给一个名为MyClass的类定义析构函数,则系统为其定义的默认析构函数形式为____MyClass()_____。
11)类中构造函数有__一个或多__个,析构函数有___一___个。
12)类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的___数据成员___,共同行为被描述为类中的__成员函数__。
13)若要把类FriendClass定义为类MyClass的友元类,则应在类MyClass的定义中加入语句_friendclassFriendClass;___。
14)___new___运算符对指定类型对象动态分配内存并返回该类型的___指针__。
15)若要把函数voidFriendFunction()定义为类MyClass的友元函数,则应在类MyClass的定义中加入语句___friendvoidFriendFuncti