面向对象程序设计教程答案_第1页
面向对象程序设计教程答案_第2页
面向对象程序设计教程答案_第3页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象程序设计教程 (C+语言描述 ) 题解与课程设计指导面向对象程序设计概论一、名词解释抽象封装消息【问题解答】面向对象方法中得抽象就是指对具体问题 (对象)进行概括 , 抽出一类对象得公共 性质并加以描述得过程。面向对象方法中得封装就就是把抽象出来得对象得属性与行为结合成一个独立 得单位, 并尽可能隐蔽对象得内部细节。消息就是面向对象程序设计用来描述对象之间通信得机制。 一个消息就就是一个 对象要求另一个对象实施某种操作得一个请求。二、填空题(1) 目前有面向过程得结构化程序设计方法与面向对象得程序设计方法两种重 要得程序设计方法。(2) 结构化程序设计方法中得模块由顺序、选择与循环 3

2、 种基本结构组成。(3) 在结构化程序设计方法中 , 程序可表示为程序 =数据结构 +算法 ; 而面向对象 得程序设计方法 , 程序可表示为程序 =对象 +消息。( ) 结构化程序设计方法中得基本模块就是过程 ; 而面向对象程序设计方 法中得基本模块就是类。(5) 面向对象程序设计方法具有抽象性、封装性、继承性与多态性等特点。三、选择题(至少选一个 ,可以多选)(1) 面向对象程序设计着重于 ( B ) 得设计。A、对象 B. 类 C、 算法 D、 数据(2) 面向对象程序设计中 , 把对象得属性与行为组织在同一个模块内得机制叫做 ( ) 。A、抽象 B 、 继承 C 、 封装 D 、 多态(

3、3) 在面向对象程序设计中 , 类通过 ( ) 与外界发生关系、A。对象。 类 。 消息 。 接口(4) 面向对象程序设计中 , 对象与对象之间得通信机制就是 ( ) 。A、对象B 、 类。 消息 D 、 接口(5) 关于 +与 C 语言得关系得描述中 ,( ) 就是错误得、A。C 语言就是 C+得一个子集B. C 语言与 C+就是兼容得C. +对语言进行了一些改进 D 、 C+与语言都就是面向对象得 【结果分析】C语言就是面向过程得。 C+语言就是一种经过改进得更为优化得 C语言 , 就是一 种混合型语言 , 既面向过程也面向对象。(6) 面向对象得程序设计将数据结构与 ( )放在一起 ,作

4、为一个相互依存、 不可分割得整体来处理、A、 算法B. 信息 C 。 数据隐藏 . 数据抽象(7) 下面 ( A) 不就是面向对象系统所包含得要素。A. 重载。 对象 。 类D 、继承【结果分析】面向对象 =对象类+继承+消息+多态() 下面说法正确得就是 ( BC ) 。A。将数据结构与算法置于同一个函数内 , 即为数据封装B、一个类通过继承可以获得另一个类得特性C、面向对象要求程序员集中于事物得本质特征 ,用抽象得观点瞧待程序D、同一消息为不同得对象接受时 ,产生得行为就是一样得 ,这称为一致性 【结果分析】面向对象程序设计方法具有抽象性、 封装性、继承性与多态性等特点。将数据结 构与算法

5、置于同一个类内 ,即为数据封装。同一消息为不同得对象接受时 , 产生得 行为可能就是不一样得 , 这称为多态性。() 下面说法正确得就是 ( AD ) 。A. 对象就是计算机内存中得一块区域 , 它可以存放代码与数据B。对象实际就是功能相对独立得一段程序C. 各个对象间得数据可以共享就是对象得一大优点D、在面向对象得程序中 ,对象之间只能通过消息相互通信 【结果分析】对象就是计算机内存中得一块区域。在对象中 ,不但存有数据 ,而且存有代码 ,使 得每个对象在功能上相互之间保持相对独立。对象之间存在各种联系 ,但它们之 间只能通过消息进行通信。四、判断题(1) 在高级程序设计语言中 ,一般用类来

6、实现对象 ,类就是具有相同属性与行为 得一组对象得集合 ,它就是创建对象得模板、 ( )() C+语言只支持面向对象技术得抽象性、封装性、继承性等特性 ,而不支持 多态性。 ( × )【结果分析】C+语言不仅支持面向对象技术得抽象性、 封装性、继承性等特性 , 而且支持多态 性。(3) 面向对象程序设计中得消息应该包含“如何做”得信息、 ( × ) 【结果分析】消息就是面向对象程序设计用来描述对象之间通信得机制。 向对象“发送消息” 只需告诉对象做什么 , 对象根据这个消息决定如何做。(4) 一个消息只能产生特定得响应效果。 ( × )【结果分析】当一个对象发出消

7、息时 , 由于接收对象得类型可能不同 ,所以,它们可能做出不同 得反应。这样 , 一个消息可以产生不同得响应效果 ,这种现象叫做多态。(5) 类得设计与类得继承机制实现了软件模块得可重用性。 ( )(6) C +语言与 J语言均不就是一个纯正得面向对象得程序设计得语言。 ( × )【结果分析】 Jv语言就是一个纯正得面向对象得程序设计语言。(7) 学习 C+语言就是学习面向对象得程序设计方法得唯一途径。 ( × ) 【结果分析】程序设计方法就是独立于具体程序设计语言得一种技术 ,学习 C+语言就是学 习面向对象程序设计方法得重要途径之一。( ) 在 C +语言中 , 类就是

8、支持数据封装得工具。 ( )五、简答题(1) 什么就是结构化程序设计方法?它有哪些优点与缺点 ?【问题解答】 结构化程序设计方法着眼于系统要实现得功能 ,从系统得输入输出出发 , 分析系 统要做哪些事情 , 进而考虑如何做这些事情 , 自顶向下地对系统得功能进行分解 , 来建立系统得功能结构与相应得程序模块结构 , 有效地将一个较复杂得程序系统 设计任务分解成许多易于控制与处理得子任务 , 便于开发与维护。 随着程序规模与复杂性得增长 , 这种面向过程得结构化程序设计方法存在明显得 不足之处。首先就是数据安全性问题。由于数据被每个模块所共用 , 因此就是不 安全得,一旦出错 , 很难查明原因。

9、 其次就是可维护性及可重用性差。 它把数据结 构与算法分离为相互独立得实体 , 一旦数据结构需要改变时 , 常常要涉及整个程 序, 修改工作量极大并容易产生新得错误。每一种相对于老问题得新方法都要带 来额外得开销、另外 , 图形用户界面得应用程序 , 很难用过程来描述与实现 , 开发 与维护也都很困难、( ) 什么就是面向对象程序设计方法?它有哪些优点?【问题解答】 面向对象得程序设计方法中 , 将程序设计为一组相互协作得对象而不就是一组相 互协作得函数、在程序中 , 属性用数据表示 , 用来描述对象静态特征 ; 行为用程序 代码实现 ,用来描述对象动态特征。可见 , 在面向对象得程序设计方法

10、中 , 对象就 是数据结构与算法得封装体。对象之间存在各种联系 , 它们之间通过消息进行通 信、程序可表示为 : 程序对象消息 在面向对象程序设计中应着重于类得设计。 类正就是面向对象语言得基本程序模 块, 通过类得设计来完成实体得建模任务。类通过一个简单得外部接口与外界发 生关系、一个类中得操作不会处理到另一个类中得数据 , 这样程序模块得独立性、 数据得安全性就有了良好得保障。程序得执行取决于事件发生得顺序 , 由顺序产 生得消息来驱动程序得执行。不必预先确定消息产生得顺序 , 更符合客观世界得 实际。并且面向对象程序设计方法提供了软件重用、 解决大问题与复杂问题得有 效途径, 具有抽象性

11、、封装性、继承性与多态性等特点。(3) 结构化程序设计方法与面向对象程序设计方法在对待数据结构与算法关 系上有 什么不同 ?【问题解答】 结构化程序设计方法中 , 把数据结构与算法分离为相互独立得实体 ; 而在面向 对象程序设计中 ,数据结构与算法封装在一起 , 结合成一个独立得单位 ,即对象, 并尽可能隐蔽对象得内部细节。 对象得私有属性只能由这个对象得行为来读取与 修改, 与外部得联系通过公有行为充当外部接口。第2章 从 C 到 C+ 面向对象程序设计教程 (C+语言描述 )题解与课程设计指导第2章C+一、名词解释 引用内联函数重载函数 【问题解答】 所谓引用就就是给对象取一个别名 , 使

12、用该别名可以存取该对象、换句话说就是 使新对象与原对象共用一个地址。内联函数就是使用 inli e 关键字声明得函数。 重载函数指在同一个作用域内名字相同而参数不同得函数。 重载函数通常用来对 具有相似行为而数据类型或数据个数不同得操作提供个通用得名称、二、填空题(1)一般情况下 , 用 C+语言编写得程序就是由函数加上类组成得、(2) C +有两种注释符号 ,一种就是/,另一种就是 */ 、( ) 使用 C+风格得输入输出 , 在程序中必须包含头文件“ iost ea”、(4) n就是预定义得标准输入流对象 , 就是输入操作符 ,也称提取运算 符。( ) co 就是预定义得标准输出流对象 ,

13、 就是输出操作符 , 也称插入运算 符。(6) 指针得值就是它所指向那个对象得地址值。 指针得类型就是它所指向对象 得类型、指针得内容便就是它所指向对象得值。(7) C 使用运算符 &来定义一个引用 , 对引用得存取都就是对它所引用得对 象得存取。(8) 当一个函数调用出现在函数定义之前时 , 必须先用函数原型对函数进行声 明。(9) C +有值传递与引用传递两种参数传递机制。( 0) 使用关键字 i n声明得函数称为内联函数。(11) 运算符 new用于进行动态内存分配 , 运算符 eee用于释放动态分配得 内存。(12) 下面程序得输出结果为 =10,y= ; =100,y=100

14、。#in l deiost eausing namspae std; nt main()nt x10, y=x;cut " =" x ,y dl; int *p=&y; = 00;cut "x= ”x ,y=" y endl;tu n ;三、选择题(至少选一个 ,可以多选)(1) 在整型指针变量 2、p3得定义中,错误得就是 ( A )、A. i t , p2,p3;、 nt*p2,p1,*p3;C. i t p1,*p = p1, ;、 int p2,p, p= 1;【结果分析】指针定义得具体格式如下所示 : 类型> *指针名 1>

15、, 指针名 2,;( ) 若有定义“ doule xx=3。1, pp=&xx; ”,则pp 等价于( C ) 、 &xxB、 *xxC. 3 、14D. x【结果分析】p指向 x 所在得内存单元 , 这样*pp 与x 等价、(3) 下面对引用得描述中 ( C ) 就是错误得。A、 引用就是某个变量或对象得别名B、建立引用时 , 要对它初始化 . 对引用初始化可以使用任意类型得变量 、 引用与其代表得对象具有相同得地址 【结果分析】 所谓引用就就是给对象取一个别名 , 使用该别名可以存取该对象 , 所以对引用初 始化必须使用同类型得变量。(4) 函数没有返回值得时候 ,应该选择

16、 ( A )得函数类型、 A。 oid B 、 i C 。 不确定D. fl at(5) 在函数得定义格式中 , 下面各组成部分中 ,( D ) 就是可以省略得。 A。 函数名 B 、 函数体 C 、 返回值类型 D. 函数参数 【结果分析】 函数得定义可以缺省形式参数 , 此时称为无参函数。(6) 对重载得函数来说 , 下面叙述不正确得就是 ( ) 。 、 参数得类型不同B。参数得顺序不同 。 参数得个数不同D、 参数得个数、类型、顺序都相同 , 但函数得返回值类型不同 【结果分析】 对重载得函数来说 , 编译系统将根据函数参数得类型与个数来判断使用哪一个函 数, 所以重载函数参数得个数、类

17、型、顺序不能都相同。(7) 下列有关设置函数参数默认值得描述中 ,( ) 就是正确得、A。 对设置函数参数默认值得顺序没有任何规定B。函数具有一个参数时不能设置默认值C。默认参数要设置在函数得原型中 , 而不能设置在函数得定义语句中D、设置默认参数可使用表达式 , 但表达式中不可用局部变量 【结果分析】 在 C+中 , 在函数原型中可以为一个或多个参数指定默认值。对函数参数设置默 认值要注意以下几点。若没有声明函数原型 , 参数得默认值可在函数定义得头部进行设置 , 否则必须 在函数原型中进行设置。在一个指定了默认值得参数右边不能出现没有指定默认值得参数。 设置默认参数可使用表达式 , 但表达

18、式中不可用局部变量。(8) 下面说法正确得就是 ( ) 。A. 所有得函数都可以说明为内联函数、 具有循环语句、 sit h 语句得函数不能说明为内联函数C、使用内联函数 , 可以加快程序执行得速度 ,但会增加程序代码得大小D。使用内联函数 , 可以减小程序代码大小 , 但使程序执行得速度减慢 【结果分析】 内联函数主要就是解决程序得运行效率问题。在程序编译时 , 编译系统将程序中 出现内联函数调用得地方用函数体进行替换 , 进而减少了程序运行得时间 ,但会 增加程序代码得大小。它就是以空间换取时间 , 因此内联函数适用于功能不太复 杂, 但要求被频繁调用得函数。( ) 一个函数功能不太复杂

19、, 但要求被频繁调用 , 应选用 (A ) 。A、内联函数 B 。 重载函数. 递归函数 、 嵌套函数(0) +对 C语言做了很多改进 ,下列描述中使得 C语言发生了质变 , 即从面 向过程变成面向对象得就是 ( ) 。A。 增加了一些新得运算符B、允许函数重载 , 并允许设置默认参数C、规定函数说明必须用原型 。 引进了类与对象得概念 【结果分析】 面向对象 =对象类继承消息 +多态四、判断题() C+ 程序中 , 不得使用没有定义或说明得变量。 ( )( ) 使用 const 说明常量时 , 可以不必指出类型。 ( × ) 【结果分析】如果用 cos 定义得就是一个整型常量 ,

20、则类型说明符 int 可以省略、(3) 引用被创建时可以用任意变量进行初始化。 ( × ) 【结果分析】对引用初始化必须使用同类型得变量。(4) 一个返回引用得调用函数可以作为左值。 ( )(5) 函数可以没有参数 ,也可以没有返回值。 ( )( ) 没有参数得两个函数就是不能重载得。 ( )( ) 函数可设置默认参数 , 但不允许将一个函数得所有参数都设置为默认参数。( × ) 【结果分析】 函数可设置默认参数 , 且允许将一个函数得所有参数都设置为默认参数。(8) 运算符 nw 分配得空间由运算符 delet 释放、 ( )五、简答题( ) 名字空间得用途就是什么? 【

21、问题解答】 名字空间用来防止命名得冲突。(2) 引用有何用处 ? 【问题解答】 除了独立引用外 ,在 +程序中, 引用得主要用途就是用作函数参数与函数得返 回值。( ) 比较值调用与引用调用得相同点与不同点、【问题解答】在值调用机制中 , 作为实参得表达式得值被复制到由对应得形参名所标识得一个 对象中 , 作为形参得初始值。函数体对形参得访问、修改都就是在这个标识对象 上操作得,与实参无关 ,即数据得传递就是单向得。使用引用作函数得形参时 ,调用函数得实参要用变量名。 实参传递给形参 , 相当于 在被调用函数中使用了实参得别名。于就是 , 在被调用函数中对形参得操作实质 就是对实参得直接操作

22、, 即数据得传递就是双向得、(4) 内联函数有什么作用?它有哪些特点?【问题解答】内联函数就是使用 inli e 关键字声明得函数。在程序编译时 ,编译系统将程序 中出现内联函数调用得地方用函数体进行替换 , 进而减少了程序运行得时间。 使用内联函数应注意以下几点。递归函数不能定义为内联函数、内联函数一般适合于不含有 wth与 whie等复杂得结构且只有 5 条语句得小函数 , 否则编译系统将该函数视为普通函数。内联函数只能先定义后使用 , 否则编译系统也将该函数视为普通函数。 对内联函数也不能进行异常接口声明。(5) 函数原型中得参数名与函数定义中得参数名以及函数调用中得参数名必须 一致吗?

23、【问题解答】 不必一致。所有得参数就是根据位置与类型而不就是名字来区分得。(6) 重载函数时通过什么来区分? 【问题解答】 编译系统将根据函数参数得类型与个数来判断使用哪一个函数、六、程序分析题(写出程序得输出结果 ,并分析结果 ) #include iostr a usi g nam pce td;int ma n()i num 5 ;in & re =num;f=r f 10; u "nu numen ; num=num+40;cou "ref= ” efen l;retur 0;【输出结果】 num=60 f 1 0【问题分析】 本题主要考查引用得含义。【结果

24、分析】程序首先定义一个 int 类型得对象 num,并给它赋初始值。然后又定义了一 个nt 类型得引用 r f, 并将它与 nm相联系。这样, 无论就是对 num还就是对 ref 进行操作 , 实际上都就是对那个一开始放着 50 得物理单元得内容进行操作。七、程序设计题写出一个完整得 C+程序, 使用系统函数 pw(x, )计算y得值, 注意包含头文 件 mah。【问题分析】 本题主要考查简单得输入输出与标准库函数得调用方法。【解题思路】 由于要用到系统函数 pw( ,y), 所以要包含头文件 c a。 要计算 xy 得值,首先必须知道与 y 得值。为了程序得通用性 ,最好通过交互 得方式输入

25、 x 与 y 得值。【参考程序】/ 1.cpp#in ue ostr am#inc ude cmatin amesp ce std;int ain() loat ,y;cou "please input 2 floats i x y;f oat z=po (x,y);out "p w(" x ",retu 0;【输出结果】please input 2 flts to o (3 、 1,2)=9 。 1 第to , :y ")=" z endl;x,y:3 、1 2类与对象 面向对象程序设计教程 (C+语言描述 )题解与课程设计指导 第

26、章类 与 对 象一、填空题(1)类定义中关键字 rvte、blic 与 prtct 以后得成员得访问 权限分别就是私有、公有与保护。如果没有使用关键字 , 则所有成员默认定义为 pr vte 权限。具有 pulic 访问权限得数据成员才能被不属于该类得函数所 直接访问。(2) 定义成员函数时 ,运算符“ "就是作用域运算符 ,“MyClss”用于表明 其后得成员函数就是在“ My las 类”中说明得。( ) 在程序运行时 , 通过为对象分配内存来创建对象、 在创建对象时 , 使用类作 为样板, 故称对象为类得实例、(4) 假定Dc就是一个类,则执行“ D a ,b( )”语句时,系

27、统自动调用 该类构造函数得次数为 11。【结果分析】创建 10个数组元素需调用构造函数 10次,创建对象 b需调用构造函数 1次, 所以 系统自动调用该类构造函数得总次数为 1。(5) 对于任意一个类 , 析构函数得个数最多为个。(6) delet 运算符通常用于实现释放该类对象中指针成员所指向得动态存 储空间得任务。(7) C+程序得内存格局通常分为个区 : 数据区、代码区、栈区与堆区、(8) 数据定义为全局变量 , 破坏了数据得 封装性; 较好得解决办法就是将所要 共享得数据定义为类得 静态成员、(9) 静态数据成员与静态成员函数可由 任意访问权限许可得函数访问。(10) 友元函数与 友元

28、类统称为友元。(11) 友元得正确使用能提高程序得效率 , 但破坏了类得封装性与数据得隐蔽 性。(12) 若需要把一个类 A定义为一个类 B得友元类 , 则应在类 B得定义中加入一 条语句 : fr en clas A; 。二、选择题(至少选一个 ,可以多选)(1) 以下不属于类访问权限得就是 ( B ) 。、 publi B. staticC 。 potec dD. pr vate 【结果分析】 类得访问权限有 pbl c、protected 与 p vate 。(2) 有关类得说法不正确得就是 ( ) 。A、类就是一种用户自定义得数据类型B、只有类得成员函数才能访问类得私有数据成员、 在类

29、中, 如不做权限说明 , 所有得数据成员都就是公有得D. 在类中, 如不做权限说明 ,所有得数据成员都就是私有得 【结果分析】类就是一种用户自定义得数据类型 , 类中成员均具有一种访问权限。关键字 public 、rot cted 与 privat 以后得成员得访问权限分别就是公有、保护 与私有得 , 所有成员默认定义为 priv te 得、 私有成员就是被隐藏得数据 , 只有该类得成员函数或友元函数才可以访问它。(3) 在类定义得外部 ,可以被任意函数访问得成员有 ( C ) 。 。 所有类成员 、 private 或 protected 得类成员C。public 得类成员D. pub ic

30、 或 rivate 得类成员【结果分析】 类就是一种用户自定义得数据类型 , 类中成员均具有一种访问权限。公有成员定 义了类得外部接口。私有成员就是被隐藏得数据 , 只有该类得成员函数或友元函 数才可以引用它。保护成员具有公有成员与私有成员得双重性质 , 可以被该类或 派生类得成员函数或友元函数引用。可见在类定义得外部 , 可以被任意函数访问 得成员就是 pul 得类成员。(4) 关于类与对象得说法 ( C ) 就是错误得。A. 对象就是类得一个实例B、任何一个对象只能属于一个具体得类、 一个类只能有一个对象。 类与对象得关系与数据类型与变量得关系相似【结果分析】 C+语言得类就就是一种用户自

31、己定义得数据类型 , 类与对象得关系就相当于基 本数据类型与它得变量得关系 , 所以任何一个对象只能属于一个具体得类 ,但一 个类可以有多个对象。() 设MCla就是一个类 ,dd 就是它得一个对象 ,pp 就是指向 d得指针,c 就是 dd得引用,则对成员得访问 ,对象 d可以通过( B )进行,指针 pp可以 通过( D ) 进行,引用c可以通过 ( B ) 进行。 B 、 . C、 D.>(6) 关于成员函数得说法中不正确得就是 ( C ) 。A. 成员函数可以无返回值B、成员函数可以重载C。成员函数一定就是内联函数D。成员函数可以设定参数得默认值【结果分析】与普通函数不同得就是

32、, 成员函数就是属于某个类得、 成员函数得实现 ,可以放在 类体内, 也可以放在类体外、在类体外实现得成员函数不再就是内联函数。(7) 下面对构造函数得不正确描述就是 ( B ) 。A、系统可以提供默认得构造函数、 构造函数可以有参数 , 所以也可以有返回值。 构造函数可以重载D、构造函数可以设置默认参数【结果分析】 构造函数不能指定返回类型 ,即使就是 vod类型也不可以 ,当然不可能有返回 值。(8) 假定就是一个类 , 那么执行语句“ A a,b(3), p; ”调用了( B ) 次构造 函数。A、1 B. 2C、 3D 、4【结果分析】 声明指针就是不会调用构造函数得。(9) 下面对析

33、构函数得正确描述就是 ( AC ) 。 . 系统可以提供默认得析构函数 . 析构函数必须由用户定义C。析构函数没有参数。 析构函数可以设置默认参数【结果分析】 析构函数得作用就是在对象消失时执行一项清理任务、 如果一个类中没有定义析 构函数,系统将自动生成一个默认析构函数。 析构函数没有参数 , 当然不可能设置 默认参数。(10) 类得析构函数就是 ( D ) 时被调用得。、 类创建 B. 创建对象 C 。 引用对象 D 、 释放对象( 1) 创建一个类得对象时 , 系统自动调用 ( B ); 撤销对象时 , 系统自动调用 ( C ) 。 成员函数 。 构造函数 、 析构函数D 、 复制构造函

34、数(12) 通常拷贝构造函数得参数就是 ( C ) 。、 某个对象名 B 、 某个对象得成员名 。 某个对象得引用名、 某个对象得指针名(13) 关于 t 指针得说法正确得就是 ( B ) 、A、 h指针必须显式说明 B、 当创建一个对象后 ,this 指针就指向该对象C。成员函数拥有 this 指针 D、 静态成员函数拥有 t s 指针、 【结果分析】t is 指针就是由 +编译器自动产生且较常用得一个隐含对象指针 , 它不能 被显式声明、当创建一个对象时 ,t is 指针就初始化指向该对象。但只有非静 态成员函数才拥有 this 指针, 并通过该指针来处理对象。(14) 下列关于子对象得描

35、述中 ,( ) 就是错误得。A。 子对象就是类得一种数据成员 , 它就是另一个类得对象。 子对象可以就是自身类得对象。 对子对象得初始化要包含在该类得构造函数中D。一个类中能含有多个子对象作其成员【结果分析】 子对象不可以就是自身类得对象。(15) 对new运算符得下列描述中 ,( B ) 就是错误得。 它可以动态创建对象与对象数组B。用它创建对象数组时必须指定初始值C、用它创建对象时要调用构造函数、 用它创建得对象数组可以使用运算符 deete 来一次释放【结果分析】使用运算符 ew创建对象数组得格式如下 : ew 类型说明符 算术表达式 其中, 算术表达式给出数组得大小 , 后面不能再跟构

36、造函数参数 , 所以用它创 建对象数组时不能指定初始值。(16) 对 delet 运算符得下列描述中 ,( ) 就是错误得。 用它可以释放用 new运算符创建得对象与对象数组B、用它释放一个对象时 , 它作用于一个 w所返回得指针. 用它释放一个对象数组时 , 它作用得指针名前须加下标运算符 D、用它可一次释放用 ew运算符创建得多个对象 【结果分析】用 delete 一次只能释放用 n w创建得个对象 , 但可释放一个对象数组。(17) 关于静态数据成员 , 下面叙述不正确得就是 ( C ) 。A. 使用静态数据成员 , 实际上就是为了消除全局变量B。可以使用“对象名。静态成员”或者“类名静

37、态成员 " 来访问静态数据 成员C、静态数据成员只能在静态成员函数中引用D、所有对象得静态数据成员占用同一内存单元【结果分析】 静态数据成员可以在静态成员函数中引用 , 也可以在非静态成员函数中引用。(18)对静态数据成员得不正确描述就是 ( CD ) 。A、 静态成员不属于对象 , 就是类得共享成员B、静态数据成员要在类外定义与初始化C. 调用静态成员函数时要通过类或对象激活 , 所以静态成员函数拥有 thi 指 针D、只有静态成员函数可以操作静态数据成员 【结果分析】ths 指针就是一个局部量 ,局部于某个对象 ,而静态成员函数就是属于整个类 而不就是某个对象 ,它没有 th 指

38、针、 静态成员函数与非静态成员函数均可操 作静态数据成员。(19)下面得选项中 ,静态成员函数不能直接访问得就是 ( ) 。A、 静态数据成员B 。 静态成员函数C、类以外得函数与数据D 、 非静态数据成员 【结果分析】由于静态成员函数没有 ti 指针, 它只能直接访问该类得静态数据成员、 静态 成员函数与类以外得函数与数据 , 访问类中得非静态数据成员必须通过参数传递 ) 、B. 深化使用类得封装性 D。 提高数据得隐蔽性, 但友元破坏了类得封装性与隐蔽方式得到对象名 , 然后通过对象名来访问。( 0) 在类得定义中 , 引入友元得原因就是 ( A。 提高效率C。 提高程序得可读性【结果分析

39、】 友元得作用主要就是为了提高效率与方便编程 性, 使用时要权衡利弊。( 1) 友元类得声明方法就是 ( A ) 。B。 y u aD 。 frie s class、 friend a s类名 > class <类名 ;C、 css fr en类名 > 类名 >(2) 下面对友元得错误描述就是 ( ) 。 A。 关键字 frien 用于声明友元B。一个类中得成员函数可以就是另一个类得友元C、友元函数访问对象得成员不受访问特性影响D、友元函数通过 his 指针访问对象成员 【结果分析】 友元函数就是一个放在类中得普通函数 , 它没有 this 指针。(2) 下面选项中 ,

40、( ) 不就是类得成员函数。A。 构造函数B。 析构函数 C。 友元函数 D 、 拷贝构造函数三、简答题(1) 类与对象有什么关系? 【问题解答】类就是一种用户自己定义得数据类型 , 与其她数据类型不同得就是 ,组成这种类 型得不仅可以有数据 , 而且可以有对数据进行操作得函数。程序员可以使用这个 新类型在程序中声明新得变量 ,具有类类型得变量称为对象。 创建对象时 ,类被用 做样板, 对象称为类得实例、( ) 类定义得一般形式就是什么 ? 其成员有哪几种访问权限 ? 【问题解答】 定义类一般形式为 : css 类名 publi :<公有数据与函数 rotected: <保护数据与

41、函数 > p te: 私有数据与函数> ;访问权限共有 3 种: 分别就是公有 (publ c) 、保护(pr tec ed)与私有(p iv te) 。(3)类得实例化就是指创建类得对象还就是定义类? 【问题解答】 指创建类得对象。( ) 什么就是 th 指针 ?它得主要作用就是什么 ? 【问题解答】指针就是 C+语言为成员函数提供得一个隐含对象指针 , 它不能被显式 声明、this 指针就是一个局部量 , 局部于某个对象。不同得对象调用同一个成员 函数时,编译器根据 his 指针来确定应该引用哪一个对象得数据成员。( ) 什么叫做拷贝构造函数 ? 拷贝构造函数何时被调用? 【问

42、题解答】 拷贝构造函数就是一种特殊得构造函数 , 它得作用就是用一个已经存在得对象去 初始化另一个对象。为了保证所引用得对象不被修改 , 通常把引用参数声明为 const 参数。在以下 3 种情况下 ,拷贝构造函数都会被自动调用 : 当用类得一个对象去初始化该类得另一个对象时 ; 当函数得形参就是类得对象 , 进行形参与实参结合时 ; 当函数得返回值就是类得对象 , 函数执行完成返回调用者时。四、程序分析题 (写出程序得输出结果 ,并分析结果 )(1)incl de<io ram> uing nam pace s; lass estpriv : t num; pblic:Tet()

43、;/ 默认构造函数Test( nt n); / 带一个参数构造函数;Test et()cout< "Init defa ”< en l;num=0;Tt Test(intn)cout<< nit"<<" <<n<<endl;nu=;i t ma n()Ts x ; / 语句Te t (1 ); /语句r tur 0;【输出结果】In defa nit defat 1 【问题分析】 本题主要考查构造函数得调用时机与构造函数得匹配问题。【要点提示】构造函数在创建对象时被自动调用 , 具体调用哪个构造函数将由编

44、译系统根据重 载函数得匹配原则来确定。【结果分析】 程序声明了个对象 x 与 y, 类中有 2 个构造函数。 程序首先执行语句 1, 创建对象 x, 调用默认构造函数。 由于对象就是对象数 组,每个数组元素被创建时都要调用构造函数 , 所以默认构造函数被调用了 2次, 输出第 1、2 行结果。程序接着执行语句 2,创建对象 y, 调用带一个参数得构造函 数,输出第 3 行结果。(2) clude<io ream usng name p e std; las X p vate:int num;ub c:Xx(n ) um x; / 构造函数 ()cout <<”dt ”<

45、< nu en l; / 析构函数 ; n ain()X w(5); / 语句 1c xi main” ndl; / 语句 2 retu 0;【输出结果】 x t ain dst 【问题分析】 本题主要考查析构函数得调用时机。【要点提示】 析构函数在释放对象时被自动调用。【结果分析】 程序声明了一个对象 w。 程序首先执行语句 1, 创建对象 w,调用构造函数 ,nu 得到初值、程序接着 执行语句 , 输出第 1 行结果。当程序结束时 , 释放对象 , 析构函数被调用 , 输出 第 2 行结果、(3) 将例3、1中得 W类如下修改 ,其她部分不变 ,写出输出结果。 cla s Whoepbic:Whole(i t i); / Wh le 得有参构造函数Whoe() ; / Wh le 得无参构造函数Whoe();/ W ole 得析

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论