ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:24.43KB ,
资源ID:12668261      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12668261.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++复习题.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C++复习题.docx

1、C+复习题C+练习题1、关于new运算符的下列描述中,()是错误的。 D A、它可以用来动态创建对象和对象数组;B、使用它创建的对象或对象数组可以使用运算符delete删除;C、使用它创建对象时要调用构造函数;D、使用它创建对象数组时必须指定初始值;2、友元的作用是 ( ) A A.、提高程序的运用效率B、加强类的封装性C、 实现数据的隐藏性D、增加成员函数的种类3、对重载函数的要求中, 不正确的为( ) D A、要求参数的个数不同 B、要求参数中至少一个类型不同C、要求参数个数相同时, 类型不同 D、要求函数的返回类型不同4、下列属于类的析构函数特征的是 ( ) A A、一个类中只能定义一个

2、析构函数B、析构函数名与类名不同C、析构函数的定义只能在类体内D、析构函数可以有一个或多个参数 5、int i=100; 下列引用方法中,正确的是( ) A A、int &r=i; B、int &r=100; C、int &r; D、int &r=&i;6、类的实例化是指( ) B A、定义类 B、创建类的对象C、指明具体类 D、调用类的成员7 不属于成员函数的是( ) B A.静态成员函数 B.友元函数 C.构造函数 D.析构函数8下列运算符中,( )运算符在C+中不能重载。 C A.& B. C.: D.new9下列说法中正确的是( ) B A.类定义中只能说明函数成员的函数头,不能定义函

3、数体B.类中的函数成员可以在类体中定义,也可以在类体之外定义C.类中的函数成员在类体之外定义时必须要与类声明在同一文件中D.在类体之外定义的函数成员不能操作该类的私有数据成员10 已知类A是类B的友元,类B是类C的友元,则( ) D A. 类A一定是类C的友元B. 类C一定是类A的友元C. 类C的成员函数可以访问类B的对象的任何成员D. 类A的成员函数可以访问类B的对象的任何成员11 有如下类定义:class Point int x_,y_;public: Point():x_(0),y_(0) Point(int x,int y=0):x_(x),y_(y); 若执行语句 Point a(2

4、),b3,*c4; 则Point类的构造函数被调用的次数是( ) C A.2次 B.3次 C.4次 D.5次12下面对派生类的描述中,错误的是( ) DA.一个派生类可以作为另外一个派生类的基类B.派生类至少有一个基类C.派生类的成员除了它自己的成员外,还包含了它的基类的成员D.派生类中继承的基类成员的访问权限到派生类中保持不变13有如下程序:#include using namespace std;class BASE public: BASE( ) coutBASE ; ;class DERIVED: public BASE public: DERIVED( ) coutDERIVED;

5、;int main( )DERIVED x; return 0 ; 执行后的输出结果是( ) D A.BASE B.DERIVED C.BASE DERIVED D.DERIVEDBASE14当保护继承时,基类的( )在派生类中成为保护成员,不能通过派生类的对象来直接访问。 B A.任何成员 B.公有成员和保护成员 C.公有成员和私有成员 D.私有成员15以下基类中的成员函数, 哪个表示纯虚函数( ) CA.virtual void vf(int); B.void vf(int )=0;C.virtual void vf()=0; D.virtual void yf(int)16抽象类应含有(

6、 )。 DA.至多一个虚函数B.至少一个虚函数C.至多一个纯虚函数D.至少一个纯虚函数 17下列关于引用的说法,错误的是( )。 D A 引用在定义时必须初始化B、引用在初始化时不能绑定常量值C、引用初始化后,可以通过更变来引用其他变量D、数组不能定义引用18类模板的实例化( ) AA. 在编译时进行 B. 属于动态联编C. 在运行时进行 D. 在连接时进行19类模板的参数错误的说法是( ) B A. 可以有多个 B. 不能有基本数据类型C. 可以是0个 D. 参数不能给初值20以下程序中,new语句干了什么。 ( ) C int* num;num = new int* 20;A、了长度为20

7、的整数数组空间,并将首元素的指针返回。B、分配了一个整数变量的空间,并将其初始化为20。C、分配了长度为20的整数指针数组空间,并将num0的指针返回。D、存在错误,编译不能通过。21关于delete运算符的下列描述中,( )是错误的。 D A、它必须用于new返回的指针;B、使用它删除对象时要调用析构函数;C、对一个指针可以使用多次该运算符;D、指针名前只有一对方括号符号,不管所删除数组的维数。22在( )情况下适宜采用inline定义内联函数。 C A、函数体含有循环语句B、函数体含有递归语句C、函数代码少、频繁调用D、函数代码多、不常调用23、下列语句中,错误的是( ) B A、cons

8、t int buffer=256;B、const int temp;C、const double* point;D、double* const pt=new double(5.5); 24、下列选项中,不属于面向对象程序设计特征的是() CA、继承性 B、多态性 C、类比性 D、封装性25、下列关于类和对象的叙述中,错误的是() AA、一个类只有一个对象 B、对象是类的具体实例C、类是某一类对象的抽象 D、类和对象的关系就像数据类型和变量的关系26、在下列函数原型中,可以作为类AA构造函数的是() DA、void AA(int); B、int AA( );C、AA(int)const; D、A

9、A(int);27、下列关于this指针的叙述中,正确的是() DA、任何与类相关的函数都有this指针 B、类的成员函数都有this指针C、类的友元函数都有this指针 D、类非静态成员函数才有this指针28、关于模板,错误的是() CA、模板声明中的第1个符号总是templateB、在模板声明中用“”括起来的部分是类型参数表C、类模板不能有数据成员D、在一定条件下函数模板的类型参数可以省略29、C+中的模板包括() CA、对象模板和函数模板 B、对象模板和类模板C、函数模板和类模板 D、变量模板和对象模板30、通过运算符重载,可以改变运算符原有的() AA、操作数类型 B、操作数个数 C

10、、优先级 D、结合性31、派生类的成员函数不能访问基类的() CA、公有成员和保护成员 B公有成员、 C、私有成员 D、保护成员32、下列关于派生类构造函数和析构函数的说法中,错误的是() DA、派生类的构造函数会隐含调用基类的构造函数B、如果基类中有默认构造函数,派生类可以不定义构造函数C、在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数D、在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数33、在C+中,用于实现运行时多态性的是() DA、友元函数 B、重载函数 C、模板函数 D、虚函数34、 对类的构造函数和析构函数描述正确的是_ _ 。 A A、构造函数可

11、以重载,析构函数不能重载 B、构造函数不能重载,析构函数可以重载 C、构造函数可以重载,析构函数也可以重载D、构造函数不能重载,析构函数也不能重载35、类的析构函数的作用是_ _。 D A、一般成员函数 B、类的初始化 C、对象的初始化 D、释放对象类的析构函数是在类对象被释放的时候自动调用的,它的作用是释放一个对象。在对象删除前,用它来做一些清理工作。36、关于纯虚函数和抽象类的描述中,( )是错误的。 C A. 纯虚函数是一种特殊的虚函数,它没有具体的实现B. 抽象类是指具有纯虚函数的类C. 一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类D. 抽象类只能作为基类来使用,其纯虚函数

12、的实现由派生类给出37、假定MyClass为一个类,则执行MyClass a,b(2),*p;语句时,自动调用该类构造函数_次。 AA、2 B、3 C、4 D、5 定义指针p并不调用类的构造函数。38、下面对于友元函数描述正确的是_。 C A、友元函数的实现必须在类的内部定义 B、友元函数是类的成员函数 C、友元函数破坏了类的封装性和隐藏性D、友元函数不能访问类的私有成员友元函数虽然在类的定义中声明,但它不是类的成员函数。39、在C+中,数据封装要解决的问题是_。 D A、数据的规范化 B、便于数据转换 C、避免数据丢失 D、防止不同模块之间数据的非法访问40、一个类的友元函数或友元类能够通过

13、成员操作符访问该类的_。 D A、私有成员 B、保护成员 C、公用成员 D、所有成员类的友元函数对类的属性和方法的访问能力等同与类的成员函数。41、为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问 权限定义为_ 。 A A、public B、protected C、private D、static42、下面对静态数据成员的描述中,正确的是_。 D A、静态数据成员可以在类体内进行初始化 B、静态数据成员不可以被类的对象调用 C、静态数据成员不能受private控制符的作用D、静态数据成员可以直接用类名调用静态数据成员应该在类体外进行初始化,其初始化与它的访问控制权无关

14、,其访问则受到访问控制权的限制。静态数据成员是所有类对象共享的成员,即可通过类名访问,又可通过对象访问。通过类名访问更方便,更高效43、下面对静态数据成员的描述中,正确的是_。 A A、静态数据成员是类的所有对象共享的数据 B、类的每个对象都有自己的静态数据成员 C、类的不同对象有不同的静态数据成员值 D、静态数据成员不能通过类的对象调用44、对于拷贝构造函数,正确的描述是_。 A A、在C+语言中如果不自定义类的拷贝构造函数,则每个类都有默认的拷贝构造函数 B、必须为每个类定义拷贝构造函数 C、如果要使用拷贝构造函数,则必须在类中先定义D、当定义了类的构造函数时,如果要使用拷贝构造函数,则必

15、须定义拷贝构造函数若没定义构造函数、拷贝构造函数、析构函数,使用默认的函数,但若定义了这类函数默认的函数自动失效。45、对于拷贝构造函数和赋值操作的关系,正确的描述是_。 C A、拷贝构造函数和赋值操作是完全一样的操作 B、进行赋值操作时,会调用类的拷贝构造函数 C、当调用拷贝构造函数时,类的对象正在被建立并被初始化D、拷贝构造函数和赋值操作不能在同一个类中被同时定义调用拷贝构造函数是定义一个新对象,赋值操作是对一个已存在的对象进行更新。46、关于new运算符的错误的描述是_。 A A、使用运算符new创建对象数组时必须定义初始值 B、使用运算符new创建对象时,会调用类的构造函数 C、运算符

16、new可以用来动态创建对象和对象数组D、使用new运算符创建的对象可以使用运算符delete删除使用运算符new创建对象数组时不能为该数组定义初始值,47、多重继承的构造顺序一般可分为4步,下面给出这4个步骤:step1: 任何非虚拟基类的构造函数按照它们被继承的顺序构造。step2: 任何虚拟基类的构造函数按照它们被继承的顺序构造。step3: 任何成员对象的构造函数按照它们声明的顺序构造。step4: 类自己的构造函数。这4个步骤的正确顺序是( )。 C A. step4、step3、step1、step2 B. step2、step4、step3、step1 C. step2、step1

17、、step3、step4 D. step3、step4、step1、step248、设置填充字符的函数是( )。 CA.int ios:width(int) B.int ios:width() C.char ios:fill(char) D.char ios:fill() 49、返回当前精度的成员函数是( )。 DA.int ios:width(int) B.int ios:width() C.int ios:precision() D. int ios:precision(int)50、下列不能作为类的成员的是() BA. 自身类对象的指针B. 自身类对象C. 自身类对象的引用D. 另一个类

18、的对象类的定义,如果有自身类对象,使得循环定义,B项错误。在类中具有自身类的指针,可以实现链表的操作,当然也可以使用对象的引用。类中可以有另一个类的对象,即成员对象。51、在公有派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的() AA. 私有成员 B. 公有成员 C. 保护成员 D. 保护成员或私有成员解析:在派生类中基类的保护或者基类公有都可以直接访问,基类的私有成员只能是基类的成员函数来访问。所以选择A项。51、所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是() AA. 类 B. 对象 C. 函数体 D. 数据块解析:类即数

19、据和操作的组合体,数据是类的静态特征,操作是类具有的动作。52、静态成员函数没有() BA. 返回值 B. this指针 C. 指针参数 D. 返回类型53、有关多态性说法不正确的是() CA. C+语言的多态性分为编译时的多态性和运行时的多态性B. 编译时的多态性可通过函数重载实现C. 运行时的多态性可通过模板和虚函数实现D. 实现运行时多态性的机制称为动态多态性解析:多态性分为静态的和动态的。静态通过函数的重载来实现,动态是通过基类指针或基类引用和虚函数来实现的。所以错误的是C项。54、下列不是描述类的成员函数的是() CA. 构造函数 B. 析构函数 C. 友元函数 D. 拷贝构造函数解

20、析:构造函数、析构函数、拷贝构造函数都是特殊的成员函数,友元则不是成员函数。55、已知f1和f2是同一类的两个成员函数,但f1不能直接调用f2,这说明() CA. f1和f2都是静态函数B. f1不是静态函数,f2是静态函数C. f1是静态函数,f2不是静态函数D. f1和f2都不是静态函数解析:普通成员函数可以调用静态函数,相反静态函数不能调用普通成员函数,这与普通函数与常成员函数相同。56、在C+语言中,数据封装要解决的问题是( ) DA. 数据的规范化 B.便于数据转换C. 避免数据丢失 D. 防止不同模块之间数据的非法访问解析:封装是指把对象属性和操作结合在一起,构成独立的单元,它的内

21、部信息对外界是隐蔽的,不允许外界直接存取对象的属性,只能通过有限的接口与对象发生联系。类是数据封装的工具,对象是封装的实现。类的访问控制机制体现在类的成员中可以有公有成员、私有成员和保护成员。对于外界而言,只需要知道对象所表现的外部行为,而不必了解内部实现细节。封装体现了面向对象方法的“信息隐蔽和局部化原则”。57、在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是() CA. 友元函数 B. 虚函数 C. 构造函数 D. 析构函数解析:定义构造函数作用就是初始化对象,而析构函数释放对象空间。虚函数用于完成多态性,友元增加访问方便性。58、当一个类的某

22、个函数被说明为virtual时,该函数在该类的所有派生类中() A A. 都是虚函数 B. 只有被重新说明时才是虚函数C. 只有被重新说明为virtual时才是虚函数 D. 都不是虚函数解析:在基类声明为virtual的函数为虚函数,在派生类中只要有相同的函数(函数名相同、返回值相同、形参类型和个数相同)即使不用virtual说明,也都是虚函数。59、适宜采用inline定义函数情况是() CA. 函数体含有循环语句 B. 函数体含有递归语句C. 函数代码少、频繁调用 D. 函数代码多、不常调用解析:内联函数具有程序代码少、频繁调用和执行效率高的特征,所以选择C项。60、C+类体系中,不能被派

23、生类继承的有() BA. 转换函数 B. 构造函数 C. 虚函数 D. 静态成员函数解析:构造函数不能被继承,而转换函数、虚函数和静态成员函数都可以被继承二、 填空题1.布尔型数值只有两个: true , false 。在C+的算术运算式中,分别当作 非0 , 0 。2.带inline关键字定义的函数为 内联函数 ,在 编译 时将函数体展开到所有调用处。内联函数的好处是节省 时间 开销。3. 每个对象都有一个指向自身的指针,称为 this 指针,通过使用它来确定其自身的地址。4. 运算符 new 自动建立一个大小合适的对象并返回一个具有正确类型的指针。5C+程序设计的关键之一是利用 继承 实现

24、软件重用,有效的缩短程序的开发时间。6 当私有派生时,基类的公有成员成为派生类的 私有成员 ;保护成员成为派生类的 私有成员 ;私有成员成为派生类的 不可访问成员 。7 C+的动态多态性是通过 虚函数 实现的。8 当通过 基类指针或引用 使用虚函数时,C+会在与对象关联的派生类中正确的选择重定义的函数。9.互相关联的各个类之间的关系主要分为 组合has-a 和 继承 is-a关系。10 在C语言中,编程的单位是_函数_;在C+语言中,编程的单位是_类_。11 类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的 _数据成员_,共同行为被描述为类中的_成员函数_。12 类的具体表

25、现是通过定义_对象_来操作的。13 对类中的成员函数和属性的访问是通过_private_、_protected_和_public_这3个关键字来控制的。14 一般情况下,按照面向对象的要求,把类中的数据成员(属性)定义为_private _权限,而把成员函数(方法)定义为_public _权限。 15 在类定义中,数据和成员函数默认权限是private _。16 类中构造函数有_一个或多个_个,析构函数有_一个_个。17 类中的构造函数是一个特殊的成员函数,它由类的对象_自动_调用,它的作用 是为对象分配内存空间,为类的数据成员进行初始化并进行一些其它类的内部操作。18 在定义类的对象时,C+

26、程序将自动调用该对象的_构造_函数初始化对象自身。19 在撤销类的对象时,C+程序将自动调用该对象的_析构_函数。20 _new_运算符对指定类型对象动态分配内存并返回_指向该类型对象的指针_。21 _delete_运算符删除(25)题中的运算符所动态分配的内存空间。22 假定用户没有给一个名为MyClass的类定义构造函数,则系统为其定义的默认构造 函数形式为MyClass() _。23 假定用户没有给一个名为MyClass的类定义析构函数,则系统为其定义的默认析构 函数形式为MyClass() _。24 在类中定义和实现的函数称为_内联函数_。25 非成员函数应声明为类的_友元_才能访问这

27、个类的private成员。26 若要把类FriendClass定义为类MyClass的友元类,则应在类MyClass的定义中加入 语句_ friend class FriendClass _。27 若要把函数void FriendFunction()定义为类MyClass的友元函数,则应在类MyClass的定义中加入语句_ friend void FriendFunction( ) _。28 const修饰符的语义是_修饰在它左边出现的类型描述符_。29 常量对象应_初始化_,并且不能在生成之后修改。30 在C+语言中,每个类都有一个隐含的指针叫做_this_指针。该指针指向 _正在调用成员函

28、数的对象_。31 当一个类对象的成员函数被调用时,该成员函数的_ this指针_指向调用它的对象。32 有如下定义语句:MyClas *p10;,则当类对象数组指针p离开它的作用域时,系统自动调用该类析构函数_0_次。33 STL 是C+提供的标准模板库,可以实现高效的泛型程序设计,体现了泛型程序设计的思想。34 map 容器中的数据元素不存储在顺序线性数据结构中,它提供一个关键字key到值value的映射。35 在STL中, iterator 如同一个特殊的指针(可以指向容器中某个位置的数据元素)。36 vector 容器实质上就是一个动态数组,会根据数据的增加,动态的增加数组空间。37 标

29、准模板库STL在 algorithm 头文件中声明了很多常用的算法,这些算法都是函数模板。38 stack 容器具有FILO(First In Last Out)的性质,是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-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1