C++复习题Word格式文档下载.docx

上传人:b****2 文档编号:1282116 上传时间:2023-04-30 格式:DOCX 页数:17 大小:24.43KB
下载 相关 举报
C++复习题Word格式文档下载.docx_第1页
第1页 / 共17页
C++复习题Word格式文档下载.docx_第2页
第2页 / 共17页
C++复习题Word格式文档下载.docx_第3页
第3页 / 共17页
C++复习题Word格式文档下载.docx_第4页
第4页 / 共17页
C++复习题Word格式文档下载.docx_第5页
第5页 / 共17页
C++复习题Word格式文档下载.docx_第6页
第6页 / 共17页
C++复习题Word格式文档下载.docx_第7页
第7页 / 共17页
C++复习题Word格式文档下载.docx_第8页
第8页 / 共17页
C++复习题Word格式文档下载.docx_第9页
第9页 / 共17页
C++复习题Word格式文档下载.docx_第10页
第10页 / 共17页
C++复习题Word格式文档下载.docx_第11页
第11页 / 共17页
C++复习题Word格式文档下载.docx_第12页
第12页 / 共17页
C++复习题Word格式文档下载.docx_第13页
第13页 / 共17页
C++复习题Word格式文档下载.docx_第14页
第14页 / 共17页
C++复习题Word格式文档下载.docx_第15页
第15页 / 共17页
C++复习题Word格式文档下载.docx_第16页
第16页 / 共17页
C++复习题Word格式文档下载.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C++复习题Word格式文档下载.docx

《C++复习题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C++复习题Word格式文档下载.docx(17页珍藏版)》请在冰点文库上搜索。

C++复习题Word格式文档下载.docx

A.&

&

B.[]C.:

:

D.new

9.下列说法中正确的是()B

A.类定义中只能说明函数成员的函数头,不能定义函数体

B.类中的函数成员可以在类体中定义,也可以在类体之外定义

C.类中的函数成员在类体之外定义时必须要与类声明在同一文件中

D.在类体之外定义的函数成员不能操作该类的私有数据成员

10.已知类A是类B的友元,类B是类C的友元,则()D

A.类A一定是类C的友元

B.类C一定是类A的友元

C.类C的成员函数可以访问类B的对象的任何成员

D.类A的成员函数可以访问类B的对象的任何成员

11.有如下类定义:

classPoint

{

intx_,y_;

public:

Point():

x_(0),y_(0){}

Point(intx,inty=0):

x_(x),y_(y){}

};

若执行语句

Pointa

(2),b[3],*c[4];

则Point类的构造函数被调用的次数是()C

A.2次B.3次C.4次D.5次

12.下面对派生类的描述中,错误的是()D

A.一个派生类可以作为另外一个派生类的基类

B.派生类至少有一个基类

C.派生类的成员除了它自己的成员外,还包含了它的基类的成员

D.派生类中继承的基类成员的访问权限到派生类中保持不变

13.有如下程序:

#include<

iostream>

usingnamespacestd;

classBASE{

public:

~BASE(){cout<

<

"

BASE"

;

}

};

classDERIVED:

publicBASE{

~DERIVED(){cout<

DERIVED"

intmain(){DERIVEDx;

return0;

执行后的输出结果是()D

A.BASEB.DERIVED

C.BASEDERIVEDD.DERIVEDBASE

14.当保护继承时,基类的()在派生类中成为保护成员,不能通过派生类的对象来直接访问。

B

A.任何成员B.公有成员和保护成员

C.公有成员和私有成员D.私有成员

15.以下基类中的成员函数,哪个表示纯虚函数()C

A.virtualvoidvf(int);

  B.voidvf(int)=0;

C.virtualvoidvf()=0;

  D.virtualvoidyf(int){}

16.抽象类应含有()。

D

A.至多一个虚函数

B.至少一个虚函数

C.至多一个纯虚函数

D.至少一个纯虚函数

17.下列关于引用的说法,错误的是()。

D

A.引用在定义时必须初始化

B、引用在初始化时不能绑定常量值

C、引用初始化后,可以通过更变来引用其他变量

D、数组不能定义引用

18.类模板的实例化()A

A.在编译时进行B.属于动态联编

C.在运行时进行D.在连接时进行

19.类模板的参数错误的说法是()B

A.可以有多个B.不能有基本数据类型

C.可以是0个D.参数不能给初值

20.以下程序中,new语句干了什么。

()C

int**num;

num=newint*[20];

A、了长度为20的整数数组空间,并将首元素的指针返回。

B、分配了一个整数变量的空间,并将其初始化为20。

C、分配了长度为20的整数指针数组空间,并将num[0]的指针返回。

D、存在错误,编译不能通过。

21.关于delete运算符的下列描述中,()是错误的。

A、它必须用于new返回的指针;

B、使用它删除对象时要调用析构函数;

C、对一个指针可以使用多次该运算符;

D、指针名前只有一对方括号符号,不管所删除数组的维数。

22.在()情况下适宜采用inline定义内联函数。

C

A、函数体含有循环语句

B、函数体含有递归语句

C、函数代码少、频繁调用

D、函数代码多、不常调用

23、下列语句中,错误的是()B

A、constintbuffer=256;

B、constinttemp;

C、constdouble*point;

D、double*constpt=newdouble(5.5);

24、下列选项中,不属于面向对象程序设计特征的是()C

A、继承性B、多态性C、类比性D、封装性

25、下列关于类和对象的叙述中,错误的是()A

A、一个类只有一个对象B、对象是类的具体实例

C、类是某一类对象的抽象D、类和对象的关系就像数据类型和变量的关系

26、在下列函数原型中,可以作为类AA构造函数的是()D

A、voidAA(int);

B、intAA();

C、AA(int)const;

D、AA(int);

27、下列关于this指针的叙述中,正确的是()D

A、任何与类相关的函数都有this指针B、类的成员函数都有this指针

C、类的友元函数都有this指针D、类非静态成员函数才有this指针

28、关于模板,错误的是()C

A、模板声明中的第1个符号总是template

B、在模板声明中用“<

”“>

”括起来的部分是类型参数表

C、类模板不能有数据成员

D、在一定条件下函数模板的类型参数可以省略

29、C++中的模板包括()C

A、对象模板和函数模板B、对象模板和类模板

C、函数模板和类模板D、变量模板和对象模板

30、通过运算符重载,可以改变运算符原有的()A

A、操作数类型B、操作数个数C、优先级D、结合性

31、派生类的成员函数不能访问基类的()C

A、公有成员和保护成员B公有成员、C、私有成员D、保护成员

32、下列关于派生类构造函数和析构函数的说法中,错误的是()D

A、派生类的构造函数会隐含调用基类的构造函数

B、如果基类中有默认构造函数,派生类可以不定义构造函数

C、在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数

D、在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数

33、在C++中,用于实现运行时多态性的是()D

A、友元函数B、重载函数C、模板函数D、虚函数

34、对类的构造函数和析构函数描述正确的是____。

A

A、构造函数可以重载,析构函数不能重载

B、构造函数不能重载,析构函数可以重载

C、构造函数可以重载,析构函数也可以重载

D、构造函数不能重载,析构函数也不能重载

35、类的析构函数的作用是______。

A、一般成员函数B、类的初始化C、对象的初始化D、释放对象

类的析构函数是在类对象被释放的时候自动调用的,它的作用是释放一个对象。

在对象删除前,用它来做一些清理工作。

36、关于纯虚函数和抽象类的描述中,()是错误的。

A.纯虚函数是一种特殊的虚函数,它没有具体的实现

B.抽象类是指具有纯虚函数的类

C.一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类

D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出

37、假定MyClass为一个类,则执行MyClassa,b

(2),*p;

语句时,自动调用该类构造函数____次。

A、2B、3C、4D、5

定义指针p并不调用类的构造函数。

38、下面对于友元函数描述正确的是_____。

C

A、友元函数的实现必须在类的内部定义

B、友元函数是类的成员函数

C、友元函数破坏了类的封装性和隐藏性

D、友元函数不能访问类的私有成员

友元函数虽然在类的定义中声明,但它不是类的成员函数。

39、在C++中,数据封装要解决的问题是______。

A、数据的规范化B、便于数据转换

C、避免数据丢失D、防止不同模块之间数据的非法访问

40、一个类的友元函数或友元类能够通过成员操作符访问该类的_______。

A、私有成员B、保护成员C、公用成员D、所有成员

类的友元函数对类的属性和方法的访问能力等同与类的成员函数。

41、为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问

权限定义为_______。

A

A、publicB、protectedC、privateD、static

42、下面对静态数据成员的描述中,正确的是_____。

A、静态数据成员可以在类体内进行初始化

B、静态数据成员不可以被类的对象调用

C、静态数据成员不能受private控制符的作用

D、静态数据成员可以直接用类名调用

静态数据成员应该在类体外进行初始化,其初始化与它的访问控制权无关,其访问则受到访问控制权的限制。

静态数据成员是所有类对象共享的成员,即可通过类名访问,又可通过对象访问。

通过类名访问更方便,更高效

43、下面对静态数据成员的描述中,正确的是____。

A、静态数据成员是类的所有对象共享的数据

B、类的每个对象都有自己的静态数据成员

C、类的不同对象有不同的静态数据成员值

D、静态数据成员不能通过类的对象调用

44、对于拷贝构造函数,正确的描述是________。

A、在C++语言中如果不自定义类的拷贝构造函数,则每个类都有默认的拷贝构造函数

B、必须为每个类定义拷贝构造函数

C、如果要使用拷贝构造函数,则必须在类中先定义

D、当定义了类的构造函数时,如果要使用拷贝构造函数,则必须定义拷贝构造函数

若没定义构造函数、拷贝构造函数、析构函数,使用默认的函数,但若定义了这类函数默认的函数自动失效。

45、对于拷贝构造函数和赋值操作的关系,正确的描述是__________。

A、拷贝构造函数和赋值操作是完全一样的操作

B、进行赋值操作时,会调用类的拷贝构造函数

C、当调用拷贝构造函数时,类的对象正在被建立并被初始化

D、拷贝构造函数和赋值操作不能在同一个类中被同时定义

调用拷贝构造函数是定义一个新对象,赋值操作是对一个已存在的对象进行更新。

46、关于new运算符的错误的描述是_______。

A、使用运算符new创建对象数组时必须定义初始值

B、使用运算符new创建对象时,会调用类的构造函数

C、运算符new可以用来动态创建对象和对象数组

D、使用new运算符创建的对象可以使用运算符delete删除

使用运算符new创建对象数组时不能为该数组定义初始值,

47、多重继承的构造顺序一般可分为4步,下面给出这4个步骤:

step1:

任何非虚拟基类的构造函数按照它们被继承的顺序构造。

step2:

任何虚拟基类的构造函数按照它们被继承的顺序构造。

step3:

任何成员对象的构造函数按照它们声明的顺序构造。

step4:

类自己的构造函数。

这4个步骤的正确顺序是()。

A.step4、step3、step1、step2B.step2、step4、step3、step1

C.step2、step1、step3、step4D.step3、step4、step1、step2

48、设置填充字符的函数是()。

A.intios:

width(int)B.intios:

width()

C.charios:

fill(char)D.charios:

fill() 

49、返回当前精度的成员函数是()。

D

C.intios:

precision()D.intios:

precision(int)

50、下列不能作为类的成员的是()B

A.自身类对象的指针

B.自身类对象

C.自身类对象的引用

D.另一个类的对象

类的定义,如果有自身类对象,使得循环定义,B项错误。

在类中具有自身类的指针,可

以实现链表的操作,当然也可以使用对象的引用。

类中可以有另一个类的对象,即成员对象。

51、在公有派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的()A

A.私有成员B.公有成员C.保护成员D.保护成员或私有成员

解析:

在派生类中基类的保护或者基类公有都可以直接访问,基类的私有成员只能是基类

的成员函数来访问。

所以选择A项。

51、所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是()A

A.类B.对象C.函数体D.数据块

类即数据和操作的组合体,数据是类的静态特征,操作是类具有的动作。

52、静态成员函数没有()B

A.返回值B.this指针C.指针参数D.返回类型

53、有关多态性说法不正确的是()C

A.C++语言的多态性分为编译时的多态性和运行时的多态性

B.编译时的多态性可通过函数重载实现

C.运行时的多态性可通过模板和虚函数实现

D.实现运行时多态性的机制称为动态多态性

多态性分为静态的和动态的。

静态通过函数的重载来实现,动态是通过基类指针或

基类引用和虚函数来实现的。

所以错误的是C项。

54、下列不是描述类的成员函数的是()C

A.构造函数B.析构函数C.友元函数D.拷贝构造函数

构造函数、析构函数、拷贝构造函数都是特殊的成员函数,友元则不是成员函数。

55、已知f1和f2是同一类的两个成员函数,但f1不能直接调用f2,这说明()C

A.f1和f2都是静态函数

B.f1不是静态函数,f2是静态函数

C.f1是静态函数,f2不是静态函数

D.f1和f2都不是静态函数

普通成员函数可以调用静态函数,相反静态函数不能调用普通成员函数,这与普通

函数与常成员函数相同。

56、在C++语言中,数据封装要解决的问题是()D

A.数据的规范化B.便于数据转换

C.避免数据丢失D.防止不同模块之间数据的非法访问

封装是指把对象属性和操作结合在一起,构成独立的单元,它的内部信息对外界是

隐蔽的,不允许外界直接存取对象的属性,只能通过有限的接口与对象发生联系。

类是数据封装的工具,对象是封装的实现。

类的访问控制机制体现在类的成员中可以有公有成员、私有成员和保护成员。

对于外界而言,只需要知道对象所表现的外部行为,而不必了解内部实现细节。

封装体现了面向对象方法的“信息隐蔽和局部化原则”。

57、在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是()C

A.友元函数B.虚函数C.构造函数D.析构函数

定义构造函数作用就是初始化对象,而析构函数释放对象空间。

虚函数用于完成多态性,友元增加访问方便性。

58、当一个类的某个函数被说明为virtual时,该函数在该类的所有派生类中()A

A.都是虚函数B.只有被重新说明时才是虚函数

C.只有被重新说明为virtual时才是虚函数D.都不是虚函数

在基类声明为virtual的函数为虚函数,在派生类中只要有相同的函数(函数名相

同、返回值相同、形参类型和个数相同)即使不用virtual说明,也都是虚函数。

59、适宜采用inline定义函数情况是()C

A.函数体含有循环语句B.函数体含有递归语句

C.函数代码少、频繁调用D.函数代码多、不常调用

内联函数具有程序代码少、频繁调用和执行效率高的特征,所以选择C项。

60、C++类体系中,不能被派生类继承的有()B

A.转换函数B.构造函数C.虚函数D.静态成员函数

构造函数不能被继承,而转换函数、虚函数和静态成员函数都可以被继承

二、填空题

1.布尔型数值只有两个:

true,false。

在C++的算术运算式中,分别当作非0,0。

2.带inline关键字定义的函数为内联函数,在编译时将函数体展开到所有调用处。

内联函数的好处是节省时间开销。

3.每个对象都有一个指向自身的指针,称为this指针,通过使用它来确定其自身的地址。

4.运算符new自动建立一个大小合适的对象并返回一个具有正确类型的指针。

5.C++程序设计的关键之一是利用继承实现软件重用,有效的缩短程序的开发时间。

6.当私有派生时,基类的公有成员成为派生类的私有成员;

保护成员成为派生类的私有成员;

私有成员成为派生类的不可访问成员。

7.C++的动态多态性是通过虚函数实现的。

8.当通过基类指针或引用使用虚函数时,C++会在与对象关联的派生类中正确的选择重定义的函数。

9.互相关联的各个类之间的关系主要分为组合has-a和继承is-a关系。

10在C语言中,编程的单位是__①函数___;

在C++语言中,编程的单位是__②类____。

11类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的

__①数据成员___,共同行为被描述为类中的__②成员函数___。

12类的具体表现是通过定义__对象_____来操作的。

13对类中的成员函数和属性的访问是通过__①private_、_②protected_和__③public__这3个关键字来控制的。

14一般情况下,按照面向对象的要求,把类中的数据成员(属性)定义为__①private___权限,而把成员函数(方法)定义为__②public____权限。

15在类定义中,数据和成员函数默认权限是private_________。

16类中构造函数有__①一个或多个___个,析构函数有__②一个_个。

17类中的构造函数是一个特殊的成员函数,它由类的对象__①自动___调用,它的作用是②为对象分配内存空间,为类的数据成员进行初始化并进行一些其它类的内部操作。

18在定义类的对象时,C++程序将自动调用该对象的_构造_____函数初始化对象自身。

19在撤销类的对象时,C++程序将自动调用该对象的__析构____函数。

20__①new___运算符对指定类型对象动态分配内存并返回___②指向该类型对象的指针_。

21__delete______运算符删除(25)题中的运算符所动态分配的内存空间。

22假定用户没有给一个名为MyClass的类定义构造函数,则系统为其定义的默认构造

函数形式为MyClass(){}______。

23假定用户没有给一个名为MyClass的类定义析构函数,则系统为其定义的默认析构函数形式为~MyClass(){}______。

24在类中定义和实现的函数称为_内联函数_______。

25非成员函数应声明为类的__友元______才能访问这个类的private成员。

26若要把类FriendClass定义为类MyClass的友元类,则应在类MyClass的定义中加入语句_friendclassFriendClass_______。

27若要把函数voidFriendFunction()定义为类MyClass的友元函数,则应在类MyClass的定义中加入语句_friendvoidFriendFunction()______。

28const修饰符的语义是_修饰在它左边出现的类型描述符_______。

29常量对象应_初始化_____,并且不能在生成之后修改。

30在C++语言中,每个类都有一个隐含的指针叫做___①this____指针。

该指针指向

___②正在调用成员函数的对象___。

31当一个类对象的成员函数被调用时,该成员函数的__this指针__指向调用它的对象。

32有如下定义语句:

MyCla

s*p[10];

,则当类对象数组指针p离开它的作用域时,系

统自动调用该类析构函数__0_____次。

33STL是C++提供的标准模板库,可以实现高效的泛型程序设计,体现了泛型程序设计的思想。

34map容器中的数据元素不存储在顺序线性数据结构中,它提供一个关键字key到值value的映射。

35在STL中,iterator如同一个特殊的指针(可以指向容器中某个位置的数据元素)。

36vector容器实质上就是一个动态数组,会根据数据的增加,动态的增加数组空间。

37标准模板库STL在algorithm头文件中声明了很多常用的算法,这些算法都是函数模板。

38stack容器具有FILO(FirstInLastOut)的性质,是STL提供的一种容器适配器。

39、C++语言支持的两种多态性分别是编译时的多态性和_运行时__的多态性。

40、C++的流库预定义了4个流,它们是cin、cout、clog和_cerr__。

41、定义类动态对象数组时,元素只能靠自动调用该类的_无参构造函数__来进行初始化。

三、编写程序

1、编写一个复数类模板Complex,其数据成员real、img的类型未知,定义相应的成员函数(构造函数、输出函数、常用运算符(如:

+、-、++、==、<

、>

>

等)重载函数)在主函数中定义类模板类对象,分别以int、double实例化类型参数。

2、自定义String类,重载运算符“=、+=、+、[]”。

3、矩阵的乘法运算。

线性代数中的矩阵可以表示为一个row*column的二维数组,建立该整数矩阵类matrix构造函数;

并对乘法运算符进行重载。

4、编程:

基类Shape为抽象类,在其中定义面积、周长、输出的纯虚函数,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2