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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(VisualC面向对象程序设计教程与实验第二版清华大学出版社18章答案Word文档下载推荐.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

VisualC面向对象程序设计教程与实验第二版清华大学出版社18章答案Word文档下载推荐.docx

1、(3) 继承性(inheritance)从已有的对象类型出发建立一种新的对象类型,使它继承原对象的特点和功能,这种思想是面向对象设计方法的主要贡献。继承是对许多问题中分层特性的一种自然描述,因而也是类的具体化和被重新利用的一种手段,它所表达的就是一种对象类之间的相交关系。它使得某类对象可以继承另外一类对象的特征和能力。继承所具有的作用有两个方面:一方面可以减少代码冗余;另一方面可以通过协调性来减少相互之间的接口和界面。(4) 多态性(polymorphism)不同的对象接收到相同的消息时产生多种完全不同的行为的现象称为多态性。C+语言支持两种多态性即编译时的多态性和运行时的多态性。编译时的多态

2、性通过重载函数实现,而运行时的多态性通过虚函数实现。使用多态性可以大大提高了我们解决复杂问题的能力。4. 解释类、对象、消息和方法的概念。(1) 类(class)在面向对象系统中,并不是将各个具体的对象都进行描述,而是忽略其非本质的特性,找出其共性,将对象划分成不同的类,这一过程为抽象过程。类是对象的抽象及描述,是具有共同属性和操作的多个对象的相似特性的统一描述体。在类的描述中,每个类要有一个名字标识,用以表示一组对象的共同特征。类中的每个对象都是该类的实例。类提供了完整的解决特定问题的能力,因为类描述了数据结构(对象属性)、算法(服务、方法)和外部接口(消息协议),是一种用户自定义的数据类型

3、。(2) 对象(object)在面向对象系统中,对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组服务构成。属性和服务是构成对象的两个主要因素,属性是一组数据机构的集合,表示对象的一种状态,对象的状态只供对象自身使用,用来描述静态特性,而服务是用来描述对象动态特征(行为)的一个操作序列,是对象一组功能的体现。对象是类的实例。(3) 消息(message)消息是面向对象系统中实现对象间的通信和请求任务的操作,是要求某个对象执行其中某个功能操作的规格说明。发送消息的对象称为发送者,接受消息的对象称为接收者。对象间的联系,只能通过消息来进

4、行。对象在接收到消息时才被激活。(4) 方法(method)在面向对象程序设计中,要求某一对象做某一操作时,就向对象发送一个相应的消息,当对象接收到发向它的消息时,就调用有关的方法,执行相应的操作。方法就是对象所能执行的操作。方法包括界面和方法体两部分。方法的界面就是消息的模式,它给出了方法的调用协议;方法体则是实现某种操作的一系列计算步骤,也就是一段程序。消息和方法的关系是:对象根据接收到的消息,调用相应的方法;反过来,有了方法,对象才能响应相应的消息。所以消息模式与方法界面应该是一致的。同时,只要方法界面保持不变,方法体的改动不会影响方法的调用。在C+语言中方法是通过函数来实现的,称为成员

5、函数。第二章1分析下列程序的执行结果: 输出随机数2. 分析下列程序的执行结果:i=03. C+语言对C语言在结构化程序设计方面进行了哪些扩充?主要在以下方面进行了扩充:文件扩展名、注释符、名字空间、输入输出、变量的定义、强制类型转换、动态内存的分配与释放、作用域运算符:、引用、const修饰符、字符串、函数4. 下述C+程序有若干处错误,试找出并纠正之。正确程序为:#includeconst float PAI=3.;float square(float r)return PAI*r*r;float square(float high,float length=0 )return high*

6、length;float (*fs)(float,float=0);void main() fs=□ coutThe circles square is fs(1.0)实参表时,将根据中的类型生成一个重载函数,即模板函数。该模板函数的定义体与函数模板的函数定义体相同,而的类型则以的实际类型为依据。第三章1 为什么要引入构造函数和析构函数?对象的初始化是指对象数据成员的初始化,在使用对象前,一定要初始化。由于数据成员一般为私有的(private),所以不能直接赋值。对对象初始化有以下两种方法:类中提供一个普通成员函数来初始化,但是会造成使用上的不便(使用对象前必须显式调用该函数)和

7、不安全(未调用初始化函数就使用对象)。当定义对象时,编译程序自动调用构造函数。析构函数的功能是当对象被撤消时,释放该对象占用的内存空间。析构函数的作用与构造函数正好相反,一般情况下,析构函数执行构造函数的逆操作。在对象消亡时,系统将自动调用析构函数,执行一些在对象撤消前必须执行的清理任务。2. 类的公有、私有和保护成员之间的区别是什么? 私有成员private: 私有成员是在类中被隐藏的部分,它往往是用来描述该类对象属性的一些数据成员,私有成员只能由本类的成员函数或某些特殊说明的函数(如第4章讲到的友员函数)访问,而类的外部根本就无法访问,实现了访问权限的有效控制,使数据得到有效的保护,有利于

8、数据的隐藏,使内部数据不能被任意的访问和修改,也不会对该类以外的其余部分造成影响,使模块之间的相互作用被降低到最小。private成员若处于类声明中的第一部分,可省略关键字private。 公有成员public:公有成员对外是完全开放的,公有成员一般是成员函数,它提供了外部程序与类的接口功能,用户通过公有成员访问该类对象中的数据。 保护成员protected: 只能由该类的成员函数,友元,公有派生类成员函数访问的成员。保护成员与私有成员在一般情况下含义相同,它们的区别体现在类的继承中对产生的新类的影响不同,具体内容将在第5章中介绍。缺省访问控制(未指定private、protected、pub

9、lic访问权限)时,系统认为是私有private成员。3. 什么是拷贝构造函数,它何时被调用?拷贝构造函数的功能是用一个已有的对象来初始化一个被创建的同类对象,是一种特殊的构造函数,具有一般构造函数的所有特性,当创建一个新对象时系统自动调用它;其形参是本类对象的引用,它的特殊功能是将参数代表的对象逐域拷贝到新创建的对象中。在以下四种情况下系统会自动调用拷贝构造函数: 用类的一个对象去初始化另一个对象cat cat1; cat cat2(cat1); / 创建 cat2时系统自动调用拷贝构造函数,/ 用cat1初始化cat2。 用类的一个对象去初始化另一个对象时的另外一种形式Cat cat2=c

10、at1; / 注意并非cat cat1,cat2; cat2=cat1; 对象作为函数参数传递时,调用拷贝构造函数。f(cat a) / 定义f函数,形参为cat类对象 cat b; / 定义对象b f(b); / 进行f函数调用时,系统自动调用拷贝构造函数 如果函数的返回值是类的对象,函数调用返回时,调用拷贝构造函数。4. 设计一个计数器类,当建立该类的对象时其初始状态为0,考虑为计数器定义哪些成员?/ counter.h#ifndef counter_h#define counter_hclass counterprivate: int count;public: counter(); v

11、oid setCount(int i); int getCount(); void displayCount(); void incrementCount(); void decrementCount(); counter();#endif/ counter.cpp#include counter.hcounter:counter() count = 0;void counter:displayCount() cout count endl;int counter:getCount() return count;setCount(int i) count = i;incrementCount(

12、) count+;decrementCount() count-;/ MAIN.CPPvoid main() counter c1; c1.displayCount(); c1.setCount(4); for(int i=0; i=10;i+) c1.incrementCount(); c1.displayCount(); 5. 定义一个时间类,能提供和设置由时、分、秒组成的时间,并编写出应用程序,定义时间对象,设置时间,输出该对象提供的时间。#include class Time int hour,minute,second; Time(int h=0,int m=0, int s=0)

13、hour = h; minute = m; second = s; void setHour(int h) void setMinute(int m) void setSecond(int s) void display() cout hour minute second stringusing namespace std;class Student private: int num; char name10; float math; float english; float computer; public: void set_stu_inf(int n,char *ch,float m,f

14、loat e,float c) num=n; strcpy(name,ch); math=m; english=e; computer=c; float sum() return (math+english+computer); float average() return (math+english+computer)/3; int get_reg_num() return num; void print() cout学号:numendl 姓名:name数学:math英语:english计算机:computer总分:sum()平均分:average() Student stu50;int i

15、,q,a,z,x,max=0,aver=0; /i为循环变量,q:学号;a:数学/成绩; z:英语成绩; x:计算机成绩 int count = 0; /表示学生人数 char* we=new char10; / 输入学生信息 for(;) coutqweazx; if (q =0 ) break; stucount+.set_stu_inf(q,we,a,z,x); if(maxa+z+x); else max=a+z+x; aver+=(a+z+x); / 输出所有学生信息学生信息为:endl for( i = 0; i count; i+) stui.print();全班学生总成绩最高分

16、为max 全班学生总平均分为aver/3q; if (q=stui.get_reg_num()此学生信息为: stui.print(); if (i=count)查无此人7. 模拟栈模型的操作,考虑顺序栈和链栈两种形式。链栈:class Stack /定义堆栈类 struct Nodeint content; Node *next; *top; Stack() top = NULL; / 构造函数的定义 bool push(int i); / 压栈成员函数的声明 bool pop(int& i); / 弹栈成员函数的声明bool Stack:push(int i) / 压栈成员函数的定义Nod

17、e *p=new Node; if (p = NULL) cout content = i; p-next = top; top = p; return true;pop(int& i) / 弹栈成员函数的定义if (top = NULL) Stack is empty.n else Node *p=top; top = top-next; i = p-content; delete p;Stack st1,st2; / 定义对象st1和st2 int x;for(int i=1;i=5;i+)st1.push(i); / 压栈成员函数的调用st2.push(i);stack1:for(i=1;=3;st1.pop(x); / 弹栈成员函数的调用coutxst1.push(20);=4;if(st1.pop(x)elsebreak;stack2:while(st2.pop(x)顺序栈采用一维数组来实现。(略)8. 写出下列程序的运行结果:Constructing 22 11Cons

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

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