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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

C++习题.docx

1、C+习题第7章 类的基本概念一、选择题1、以下不属于类存取权限是_。A) public B) staticC) protected D) private【解答】答案:B,ACD均为类访问修饰符,B是普通的修饰符。2、类的析构函数是_时调用的。A) 类创建 B) 创建对象C) 引用对象 D) 释放对象【解答】答案: D,析构函数功能是释放对象,收回资源。3、有关构造函数的说法,不正确的是_。A) 对象是类的一个实例 B) 任何一个对象只能属于一个具体的类C) 一个类只能有一个对象 D) 类与对象的关系和数据类型与变量的关系相似【解答】答案: C ,一个类可以创建多个对象。4、通常拷贝构造函数的参

2、数是_。A) 某个对象名 B) 某个对象的成员名C) 某个对象的引用名 D) 某个对象的指针名【解答】答案: C ,构造函数的参数是类本身的引用。5、假定A是一个类,那么执行语句“A a, b(3), *p;”调用了_次构造函数。A) 2 B) 3C) 4 D) 5【解答】答案: A,其中*p并没有调用构造函数,只有使用new以后,才创建对象。二、填空题1、假定DD是一个类,则执行“DD a10, b(2)”语句时,系统自动调用该类构造函数的次数为_【解答】答案:11次2、对于任意一个类,析构函数的个数最多为_个。【解答】答案:13、一个类的_函数通常用于实现释放该类对象中指针成员所指向的动态

3、存储空间的任务。【解答】答案:析构函数4、C+程序的内存格局通常分为四个区:(1)_,该区用来存放全局变量、静态数据、常量。(2)_,该区用来存放类成员函数、其他函数代码。(3)_该区用来存放局部变量、函数参数、返回数据和返回地址。(4)_。该区是自由存储区。【解答】答案:全局数据区(data area) 代码区(code area) 栈区(stack area) 堆区 (heap area)三、简答题与程序设计题1、简述3种访问修饰符对类成员的访问限制。【解答】答案:C+语言通过访问限定符public、private和protected将类成员分成三类:公有成员、私有成员和保护成员。公有成员

4、(public修饰)可以被该类的成员函数访问,也可以在程序的任意地方被任意访问。私有成员(private修饰)只能被该类的成员函数或者该类的友元函数访问。友元是为了增加程序的灵活性而引入的概念,允许程序中的某些函数访问类中的私有成员。保护成员(protected)对于派生类来说,就像是公有成员,可以被访问,对于程序的其他部分来说,就像是私有成员,不允许被访问。2、定义一个学生类,输入学生的姓名、语文成绩、数学成绩和英语成绩,计算并输出每位学生的各门功课的成绩、总成绩和平均成绩。【解答】思路:设计一个类,类的数据成员包括姓名、语文成绩、数学成绩和英语成绩。类的成员函数包括算总成绩、算平均成绩和输

5、出各门功能的成绩。3、简述拷贝构造函数的必要性。【解答】答案:当用一个对象值初始化一个新对象的时候,或者利用一个对象构造另一个对象的时候,要涉及到对象的拷贝,比如执行语句“person p1 = p2”或者“person p1(p2)”。这个时候p1和p2指向堆的同一内存空间,当p1调用析构函数释放堆空间以后,这个时候p2指向的地址变空了,如果p2再调用析构函数释放内存空间,将会出错。如图7-1所示。图7-1 使用对象赋值一、选择题1、在C+中可以把具有相同内部存储结构和相同操作的对看成属于同一类。在指定一个类后,往往把属于这个类的对象称为类的_ A)实例 B)实物 C)特征 D)对象 【解答

6、】答案:A,使用类创建出来的数据类型,称之为类的实例。2、有关类的说法不正确的是_. A)类是一个用户自定义的数据类型 B)只有类中的成员函数才能存取类中的私有数据 C)在类中,如果不作特别说明,所有的数据均为私有类型 D)在类中,如果不作特别说明,所有的成员函数均为公有类型 【解答】答案:D ,如果不特别说明,所有成员均为私有类型。4、有关类和对象的说法下列不正确的有_ A) 对象是类的一个实例 B)任何一个对象只能属于一个具体的类 C)一个类只能有一个对象 D)类与对象和关系和数据类型和变量的关系相似 【解答】答案:C,一个类可以创建多个对象。5、有关构造函数的说法不正确的是_ A) 构造

7、函数名字和类的名字一样 B)构造函数在说明类变量时自动执行 C)构造函数无任何函数类型 D)构造函数有且只有一个 【解答】答案:D ,构造函数可以重载,可以有多个。6、有关析构函数的说法不正确的是_ A)析构函数有且只有一个 B)析构函数无任何函数类型 C)析构函数和构造函数一样可以有形参 D)析构函数的作用是在对象被撤消时收回先前分配的内存空间 【解答】答案:C ,析构函数没有形参。7、在类的定义体外定义成员函数时,需要在函数名前加上_ A)类标记 B)类域标记 C)类对象 D)域运算符 【解答】答案:B,需要加上类域运算符“:”。8、在类的定义形式中,数据成员、成员函数和_组成了类。 A)

8、成员的访问控制信息 B)公有信息 C)私有信息 D)保护信息 【解答】答案:A,类的成员控制信息,也就是访问修饰符。9、_功能是对对象进行初始化 A)析构函数 B)数据成员 C)构造函数 D)静态成员函数 【解答】答案:C,构造函数的功能是初始化。第8章 静态成员与友元一、选择题1、关于静态数据成员,下面说法错误的是_。A) 使用静态数据成员,实际上是为了消除全局变量。B) 可以使用“对象名.静态成员”或者“类名:静态成员”来访问静态数据成员。C) 静态数据成员只能在静态成员函数中引用。 D) 所有对象的静态数据成员占用同一内存单元。【解答】答案:C,静态成员函数只能引用静态数据成员,但是静态

9、数据成员可以在任意地方使用。2、下面的函数中,静态成员函数不能访问的是_A) 静态数据成员 B) 静态成员函数C) 类以外的函数和数据 D) 非静态数据成员【解答】答案:D,静态成员函数不能访问非静态数据成员。3、在类的定义中,引入友元的原因是_A) 提高效率 B) 深化使用类的封装性C) 提高程序的可读性 D) 提高程序的可读性【解答】答案:A ,友元的目的之一是提高编写效率。4、友元类的声明方法是:_A) friend class ; B) youyuan class ;C) class friend ; D) friends class 【解答】答案:A,只有A是合法的友元定义方式。二、

10、填空题1、数据定义为全局变量,破坏了数据的_;较好的解决办法是将所要共享的数据定义为类的_。【解答】答案:封装性 静态成员2、静态数据成员和静态成员函数可由_函数访问【解答】答案:任意访问权限许可的3、_和_统称为友元【解答】答案:友元函数 友元类4、友元的正确使用能提高程序_,但破坏了类的封装性和数据的隐蔽性【解答】答案:的运行效率三、简答题和程序设计题1、简述静态数据成员和普通数据成员的区别和联系。静态成员函数与普通成员函数的区别和联系。【解答】答案:静态数据成员不从属于任何一个具体对象,所以必须对它初始化,且对它的初始化不能在构造函数中进行,类中用关键字static修饰的数据成员叫做静态

11、数据成员。静态成员函数只能访问静态数据成员、静态成员函数和类以外的函数和数据,不能访问类中的非静态数据成员,因为非静态数据成员只有对象存在时才有意义。但静态数据成员和静态成员函数可由任意访问权限许可的函数访问。2、简述C+语言引入友元的原因。【解答】答案:有时候,普通函数需要直接访问一个类的保护或私有数据成员。普通函数需要直接访问类的保护或者私有数据成员的原因主要是为提高效率。在类里声明一个普通函数,加上关键字friend,就成了该类的友元,可以访问该类的一切成员。3、改写程序proj8_04.cpp,不用友元实现程序功能。【解答】答案:需要将友元部分分别放到类中。4、改写程序proj8_05

12、.cpp,使用友元函数实现该程序的功能。【解答】答案:将公用的部分拿到一个类中,然后定义成另一个类的友元。一、选择题1、_只能访问静态成员变量,静态成员函数和类以外的函数和数据不能访问类中的非静态成员变量 A)静态函数 B)虚函数 C)构造函数 D)析构函数 【解答】答案:A,静态成员函数只能访问静态成员变量。2、局部变量可以隐藏全局变量,那么在有同名全局变量和局部变量的情形是,可以用_提供对全局变量的访问。 A)域运算符 B)类运算符 C)重载 D)引用 【解答】答案:A,使用域运算符可以限制访问类内部的成员。3、在下列关键字中,用以说明类中公有成员的是_ A)public B)privat

13、e C)protected D)friend 【解答】答案:A,public修饰的成员是公有的。4、下列的各类函数中,_不是类的成员函数. A)构造函数 B)析构函数 C)友元函数 D)拷贝初始化构造函数 【解答】答案:C,其中ABD均是成员函数,C不是。5、_不是构造函数的特征 A) 构造函数的函数名与类名相同 B)构造函数可以重载 C)构造函数可以设置默认参数 D)构造函数必须指定类型说明 【解答】答案:D,构造函数没有类型说明。6、 _是析构函数的特征 A)一个类中只能定义一个析构函数 B)析构函数名与类名不同 C)析构函数的定义只能在类体内 D)析构函数可以有一个或多个参数 【解答】答

14、案:A,析构函数只能有1个。7、通常拷贝初始化构造函数的参数是_ A)某个对象名 B)某个对象的成员名 C)某个对象的引用名 D)某个对象的指针名 【解答】答案:C,拷贝构造函数的参数是当前类的引用。8、关于成员函数特征的下述中, _是错误的。 A)成员函数一定是内联函数 B)成员函数可以重载 C)成员函数可以设置参数的默认值 D)成员函数可以是静态的 【解答】答案:A ,成员不一定是内联函数。9、下述静态数据成员的特征中,_是错误的。 A)说明静态数据成员时前边要加修饰符static B)静态数据成员要在类体外进行初始化 C)引用静态数据成员时,要在静态数据成员名前加和作用域运算符 D)静态

15、数据成员不是所有对象所共用的 【解答】答案:D,静态数据成员是所有对象共有的。10、从语言角度来说,类是一种数据类型,而_是具有这种类型的变量 A)实例 B)实物 C)特征 D)对象 【解答】答案:B,实例是类创建的,变量是数据类型创建的。11、若Queue是类,aQueue 是它的一个对象,p1是类对象aQueue的一个指针,那么类对象 aQueue的指针p1可以通过_来访问类的成员。 A): B). C); D)- 【解答】答案:D,使用p1-访问类的成员。二、填空题1、类中的数据和成员函数默认类型为_. 【解答】答案:私有 2、结构中的数据和成员函数默认类型为_ 【解答】答案: 公有 3

16、、在类内部定义的_数据不能被不属于该类的函数来存取,定义为_的数据,函数则可以在类外部进行存取 【解答】答案:private public 4、 _是一种特殊的成员函数,它主要用来为对象分配内存空间,对类的数据成员进行初始化并执行对象和其他内部管理操作. 【解答】答案:构造函数 5、一个类有_个析构函数 【解答】答案: 1 6、静态数据成员在定义或说明时前面要加上关键字_. 【解答】答案: static 7、 _成员函数的实现中不能直接引用类中说明的非静态成员. 【解答】答案:静态 8、定义在类内部的函数为类默认状态_,在类外部每次调用该函数时,定义的函数代码会在调用函数位置展开。 【解答】答

17、案:内联函数 第9章 运算符重载一、选择题1、下列运算符中,不能重载的是_。A) : B) +C) D) &【解答】答案:A ,其他都可以被重载。2、下列关于运算符重载的描述中,正确的是_。A) 不能改变运算符的优先级 B) 能够改变操作数的数目C) 所有运算符都可以重载 D) 通过重载“()”能够改变运算符的结合性【解答】答案:A ,其中,不能改变操作数的数目,不能通过重载括号改变结合性。3、执行语句“person p1= p2”将调用p1的_。A) 构造函数 B) 拷贝构造函数C) 析构函数 D) 赋值运算符重载函数【解答】答案:B ,和person p1(p2)一样都是调用拷贝构造函数,

18、如果person p1; p1=p2则调用重载赋值运算符函数。4、基本类型到用户定义类型的转换通过_实现。A) 强制转换 B) 用户自定义类型的构造函数C) 基本类型的转换函数 D) 无法实现【解答】答案:B。只有用户自定义类型的构造函数可以实现题目中的转换。二、填空题1、使用重载运算符号有两个优点:1、_。2、_。【解答】答案:使C+代码更直观,更容易读。简单运算符组成的表达式常常比函数调用更简洁,易懂 运算符的重载可以改进程序的可读性2、下面类的定义中,几个函数的名称是什么?class X X(some_value); / _ X(const X&); / _ X&operator = (

19、const X&); / _ X(); / _;【解答】答案:构造函数 拷贝构造函数 重载赋值运算符函数 析构函数3、表达式“converter d1 = 10;”,“10”是一个整型的数,“d1”是一个用户自定义对象。实现这种赋值关系,通过用_实现。【解答】答案:户定义类型的构造函数4、当对象进行赋值的时候,“person p1 = p2;”和“person p1; p1 = p2;”是不同的。“person p1 = p2;”在声明的就用另一个对象对其赋值,等价于“_”,为了给p1分配一块新的堆空间,系统将调用_。语句“person p1; p1 = p2”是不同的,将调用_。【解答】答案

20、:person p1(p2) 拷贝构造函数 重载赋值运算符函数三、简答题与程序设计题1、利用运算符的重载,定义复数类的加法与减法,使之能够执行下列运算。Complex a(2, 5) , b(7, 8), c(0 , 0)c = a + b;c = 4.1 + a;【解答】答案:参考书上二元操作符重载的方法,重新定义加号运算。2、利用运算符的重载,编写一个时间类,实现时间的加、减、读和输出。【解答】答案:主要考虑加和减的操作是60进制,其他部分和重载普通加号运算符一致。一、选择题1、下列运算符中, _运算符在C+中不能重载 A) ? B) + C) - D) = 【解答】答案:A,其中,BCD

21、均可以重载。2、下列运算符中,_运算符在C+中不能重载 A) & B) C) : D) NEW 【解答】答案:C,域限定符“:”不能重载。3、在C+中,通常将重载运算符的成员函数称为_ A)运算符函数 B)重载函数 C)函数重载运算符 D)以上都不对 【解答】答案:A,称之为运算符函数。4、对定义重载函数的下列要求中,_是错误的 A) 要求参数的个数不同 B) 要求参数中至少有一个类型不同 C)要求参数个数相同时,参数类型不同 D)要求函数的返回值不同 【解答】答案:D,函数重载跟函数的返回值没有关系。5、下列函数中,_不能重载. A) 成员函数 B)非成员函数 C)析构函数 D)构造函数 【

22、解答】答案:C ,析构函数不能重载。6、系统在调用重载函数时,往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是_。 A)参数个数 B)参数类型 C)函数名称 D)函数类型 【解答】答案:D,函数重载跟函数的返回值,也就是函数类型无关。7、下列对重载函数的描述中, _是错误的。 A)重载函数中不允许使用默认参数 B)重载函数中编译是根据参数表进行选择的 C)不要使用重载函数来描述毫无相干的函数 D)构造函数重载将会给初始化带来多种方式 【解答】答案:A ,重载函数中可以使用默认参数。8、下列关于运算符重载的描述中,_是正确的。 A) 运算符重载可以改变运算数的个数 B) 运

23、算符重载可以改变优先级 C) 运算符重载可以改变结合性 D)运算符重载不可以改变语法结构 【解答】答案:D ,运算符重载不可以改变结构。9、运算符重载函数是_。 A)成员函数 B)友员函数 C)内联函数 D)带默认参数的函数 【解答】答案:C,运算符重载函数系统处理为内联函数。第10章 继承一、选择题1、在C+类体系中,不能被派生类继承的是_。A) 构造函数 B) 虚函数C) 静态成员函数 D) 赋值操作函数【解答】答案:A ,构造函数是每个类特有的,不能被继承。2、下列对基类和派生类关系的描述中,错误的是_。A) 派生类是基类的具体化 B) 派生类是基类的子集C) 派生类是基类定义的延续 D

24、) 派生类是基类的组合 【解答】答案: B,派生类是基类的扩展,基类是派生类的子集。3、设置虚基类的目的是_。A) 简化程序 B) 消除二义性C) 提高程序运行效率 D) 减少目标代码【解答】答案:B ,目的是消除二义性。4、可以访问类对象的私有数据成员的是_。A) 该类的对象 B) 该类友元类派生的成员函数C) 类中的友元函数 D) 公有派生类的成员函数【解答】答案:C,友友不受类的修饰符限制。5、下面对继承关系描述中,正确的是_。A) 在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。B) 在公有继承中,基类中只有公有成员对派生类的对象是可见的。C) 在私有继承中,基类只有公有

25、成员对派生类对象是可见的。D) 在私有继承中,基类中的保护成员对派生类的对象是可见的。【解答】答案:B,其中,私有成员不被继承。私有继承中,没有成员在派生类中是可见的。二、填空题1、派生类的成员函数可以直接访问基类的_成员,不能直接访问基类的_成员。【解答】答案:1、公有和保护 私有2、在一个或若干个类的基础上构造一个新类,被称为_。【解答】答案:2、继承(派生)3、类B从类A私有派生,类C从类B派生,不管类C如何继承类B,类C的成员函数不能访问A类的_成员。【解答】答案:3、所有4、如果创建类时未给定访问说明符,则默认其为_。【解答】答案:4、私有类型5、继承可以称为“_”关系。例如:管理者

26、是一个雇员,或秘书也是一个雇员等等,这些都可以用继承来实现。如果是成员关系,可以称为“_”关系。【解答】答案:5、是一个 有一个三、简答题与程序设计题1、简述继承的必要性。【解答】答案:“继承”是类之间的一种特殊联系。基类(Person类),是指能够派生出新类的类,也称为父类;被基类派生出的新类称为派生类,也称为子类(Student类)。不仅简化了代码,而且重用了部分代码2、编写程序实现图10-1所示的继承关系。图10-1 继承关系【解答】答案:class Person private: char * name; int age;public: void getInfo() cout name age endl; setAge (int a) age = a; setName ( char * c) name = c;class Student : public Personprivate: char * school;public:;3、简述protected关键字的用法以及约束关系。【解答】答案:成员的访问规则如表10-1所示。表10-1 成员的访问规则访问修饰符从自身类访问从派生类访问外部对象访问public是是是protected是是否private是否否从表中可以看出,如果不考虑继承关系的话,可以认为protected和private修饰府的限定关系相同。4、

copyright@ 2008-2022 冰豆网网站版权所有

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