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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

C面向对象程序设计教程陈维兴林小茶课后习题答案doc.docx

1、C面向对象程序设计教程陈维兴林小茶课后习题答案docC+ 面向对象程序设计教程课后题答案什么是面向对象程序设计 ?面向对象程序设计是一种新的程序设计范型 . 这种范型的主要特征是 :程序 =对象 +消息面向对象程序的基本元素是对象。主要结构特点是:第一, 程序一般由类的定义和类的使用两部分组成;第二, 程序中的一切操作都是通过向对象发送消息来实现的。什么是对象 ?什么是类 ?对象与类之间的关系是什么 ?对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。类就是具有相同的数据和相同的操作的一组对象的集合, 也就是说,类是对具有相同数据结构和相同操作的一类对象的描述。类和对象

2、之间的关系是抽象和具体的关系。类是多个对象进行综合抽象的结果,一个对象是类的一个实例。现实世界中的对象有哪些特征?请举例说明。现实世界中的对象具有以下特征:1) 每一个对象必须有一个名字以区别于其他对象;2) 用属性来描述对象的某些特征;3) 有一组操作,每组操作决定对象的一种行为;4) 对象的行为可以分为两类:一类是作用于自身的行为,另一类是作用于其他对象的行为。例如一个教师是一个对象。 每个教师对象有自己的名字来和别的教师区别。 教师具有编号,姓名,年龄,职称,专业等属性。教师拥有走路,吃饭,授课等行为操作。走路,吃饭是作用于自身的行为,授课是作用于其他对象的行为。什么是消息?消息具有什么

3、性质?一个对象向另一个对象发出的请求成为“消息”。消息具有以下 3 个性质:1) 同一个对象可以接收不同形式的多个消息,做出不同的相应;2) 相同形式的消息可以传递给不同的对象,所做出的响应可以是不同的;3) 对消息的响应并不是必须的,对象可以响应消息,也可以不响应。什么是抽象和封装?请举例说明。抽象是将有关事物的共性归纳、集中的过程。例如:把所有具有大学生学籍的人归为一类, 成为“大学生”,这就是一个抽象。封装是指把数据和实现操作的代码集中起来放在对象内部, 并尽可能隐藏对象的内部细节。例如:每一台洗衣机都有出厂日期、机器编号等属性,也有启动、暂停、选择等操作。人们在使用洗衣机的时候只需要按

4、下对应的按钮, 而不用关心具体的内部实现。这就是封装。什么是继承?请举例说明。继承就是允许派生类使用基类的数据和操作, 同时,派生类还可以增加新的操作和数据。例如:哺乳动物是一种热血、有毛发、用奶哺育幼崽的动物; 狗是有犬牙、食肉、特定的骨骼结构、群居的哺乳动物。 狗就继承了哺乳动物。若类之间具有继承关系,则他们之间具有什么特征?若类之间具有继承关系,则他们之间具有下列几个特征:1) 类间具有共享特征(包括数据和操作代码的共享);2) 类间具有差别或新增部分(包括非共享的数据和操作代码);3) 类具有层次结构。什么是单继承、多继承?请举例说明。单继承是指每个派生类只直接继承了一个基类的特征。例

5、如狗继承自哺乳动物。多继承是指多个基类派生出一个派生类的继承关系。 比如玩具车同时继承自玩具和车。什么是多态?请举例说明。多态是指不同的对象收到相同的消息时执行不同的操作。例如,有一个窗口类对象,还有一个棋子类对象。当我们发出“移动”消息时,两个对象的行为不同。面向对象程序设计的主要优点是什么?1.可提高程序的重用性;2.可控制程序的复杂性;3.可改善程序的可维护性;4.能够更好地支持大型程序设计;5.增强了计算机处理信息的范围;能够很好地适应新的硬件环境。简述 C+的主要特点。1)C+是 C 的超集,保持与 C 的兼容。2)保持了 C 的简洁、高效和接近汇编语言等特点,并对C 的功能作了不少

6、扩充。用 C+编写的程序比 C更安全,可读性更好,代码结构更为合理。3) 程序质量高。4) 增加了面向对象机制。#include using namespacestd;int main()int a, b, d, min;cout a b;min = a b ? b : a;for (d = 2; d min; d+)if (a % d) = 0) & (b % d ) = 0) break ;if (d = min)cout No common denominators endl; return 0;cout The lowest common denominator is d endl;

7、return 0;有效没有函数声明;函数定义没有写返回值类型。(1)等价,函数声明可以省略参数的名字。( 2)不等价,第二个的函数定义不能省略参数的名字。CDAABACBDCDC10110 101020举例说明可以使用 const 替代 #define 以消除 #define 的不安全性。#include using namespacestd;int main()inta =1;#defineT1 a+a#defineT2 T1-T1cout T2 is T2 endl;return0;上面这个程序,初看应该输出 T2 is 0但是实际上,得出 T2 is 2如果把 #define 换成 co

8、nst , 则可以输出想要的结果。用动态分配空间的方法, 计算 Fibonacci 数列的前 20 项,并存储到动态分配的空间中。#include using namespacestd;int main()int*pi =new int 20;*pi =1;pi1 =1;for( inti = 2; i 20; i+)pii = pii -2 + pii -1;return 0;重载 sroot 函数,输出一个数的二次方根。#include using namespacestd;double sroot( int num)return ( double )sqrt( double )num);

9、double sroot( long num)return ( double )sqrt( double )num);double sroot ( double num)return ( double )sqrt(num);int main()return 0;解决百钱问题。将一元人民币换成 1、2、 5 分的硬币,有多少种换法?#include using namespacestd;int main()int num = 0; Default constructor called.Default constructor called.Construcotor:a=1,b=2Construco

10、tor:a=3,b=4Construcotor:a=5,b=6Con.Copy con.default.Copy con.A=5B=14A=9B=145,7ConstructingConstructingA=5B=15A=10B=15DestructingDestructingvoid pintStu(); 函数只有声明,没有定义。age 是私有成员,不能用对象直接调用。void printStu() 和 void setSno(int s) 没有加限定符Student:void setAge(int a) 在类中没有声明构造函数不能定义为私有。否则无法创建对象。下面是一个计算器类的定义,请完

11、成该类成员函数的实现。class counterpublic :counter( int number);void increment(); ult() ;修改,通过对象指针访问对象数组,使程序以相反的顺序显示每个对象数组元素的 qu*price 值。class bookprivate :int qu, price;public :book( int qu);int mult();book:book(int q)if (q 5)qu =1;elsequ = q;price =10 * qu;int book:mult()return qu * price;int main()book book

12、s 5 = book *p = books;p += 4;for ( int i = 0; i 1, 2, 3, 4, 5;5; i+)cout mult() -p; ;return0;构建一个类 Stock ,含字符数组 stockcode 及整型数组成员 quan、双精度型数据成员price 。构造函数含 3 个参数:字符数组 na 及 q、p。当定义 Stock 的类对象时,将对象的第一个字符串参数赋给数据成员 stockcode ,第 2 和第 3 个参数分别赋给 quan、 price 。未设置第 2 和第 3 个参数时, quan 的值为 1000 ,price 的值为 . 成员函

13、数 print 没有形参,需使用 this 指针,显示对象数据成员的内容。编写程序显示对象数据成员的值。#include using namespacestd;class Stockprivate :char stockcode 25;int quan;double price;public :Stock( char na,int q = 1000,double p = ;Stock( char na);void print();Stock:Stock(char na,int q = 1000,double p =strcpy(stockcode, na);quan = q;price = p

14、;void Stock:print()cout stockcode: stockcode quan: quan price: price endl;int main()Stock stock1(Stock stock2();();600001 , 3000, ;600002 );return0;编写一个程序,已有若干学生的数据,包括学号、姓名、成绩,要求输出这些学生的数据并计算出学生人数和平均成绩(要求将学生人数和总成绩用静态数据成员表示)。#include using namespacestd;class studentprivate :char name 25, studentNo 10;

15、int score;static int sum;static int totalScore;public :student( char na, char stuNo,void show();static void showTotal();int sc);student:student(char na,char stuNo,int sc)strcpy(name, na);strcpy(studentNo, stuNo);score = sc;+sum;totalScore += sc;void student:show()cout 姓名: name endl;cout 学号: studentN

16、o endl;cout 成绩: score endl;void student:showTotal()cout 总人数: sum endl;cout 平均成绩: ( double )totalScore/sum endl;intstudent:sum =0;intstudent:totalScore =0;intmain()student s1( 张无忌 ,111254 ,75);student s2( 李莫愁 ,254114 ,60);student s3( 小龙女 ,112587 ,88);();();();student:showTotal();return 0;有哪几种继承方式 ?每种

17、方式的派生类对基类成员的继承性如何 ?公有继承 , 私有继承和保护继承。基类的私有成员,无论哪种继承方式都不能访问。公有继承不改变基类的公有和保护成员的访问限制。私有继承将基类的公有和保护成员都变成私有。保护继承将基类的公有和保护成员都变成保护。派生类能否直接访问基类的私有成员?若否,应如何实现?不能。可以在基类里添加一个公有成员函数来访问私有成员,派生类就能继承这个公有成员函数,实现对基类私有成员的访问。保护成员有哪些特性?保护成员以公有方式或私有方式继承后的访问特性如何?保护成员只能被本类或本类的派生类所访问,在类或派生类外是不能被访问的。后面一问见第一题的答案。派生类构造函数和析构函数的

18、执行顺序是怎样的?构造函数是先执行父类的构造函数,再执行类中其他类对象的构造函数, 再执行本类的构造函数。 如果同级有多个构造函数, 则按声明顺序执行。析构函数与构造函数的执行顺序刚好相反。派生类构造函数和析构函数的构造规则是怎样的?派生类名(参数总表) : 基类名(参数总表)派生类新增数据成员的初始化语句派生类中的析构函数与基类无关。什么是多继承?多继承时,构造函数与析构函数的执行顺序是怎样的?多继承是指一个类同时继承自多个不同的基类。执行顺序同在类的派生中为何要引入虚基类?虚基类构造函数的调用顺序是如何规定的?如果一个类有多个直接基类,而这些直接基类又有一个共同的基类,则在最底层的派生类中

19、会保留这个简介的共同基类数据成员的多份同名成员。在访问这些同名成员的时候,会产生二义性。为了解决二义性,引入了虚基类。1) 如果虚基类中定义有带形参的构造函数,并且没有定义默认形式的构造函数, 则整个继承结构中, 所有直接或间接的派生类都必须在构造函数的成员初始化表中列出对虚基类构造函数的调用, 以初始化在虚基类中定义的数据成员。2) 建立一个对象时,如果这个对象中含有从虚基类继承来的成员,则虚基类的成员是由最远派生类的构造函数通过调用虚基类的构造函数进行初始化的。该派生类的其他基类对虚基类构造函数的调用都自动被忽略。3) 若同一层次中同时包含虚基类和非虚基类,应先调用虚基类的构造函数,再调用

20、非虚基类的构造函数,最后调用派生类的构造函数。ACCBConstructor B1.Constructor B2.Constructor A.321主食 =bread副食 =steak0,0,00,1,03,6,9Constructor B1.Constructor B2.Constructor B3.Constructor A.124,34(1,2)5,6(6,9)class base1class base2class level2class base2class level1class toplevel#include using namespacestd;#include class t

21、ablepublic :table(intp,intq)i = p;j = q;void ascii( void );protected :int i, j;void table:ascii()intk =1;for(; i = j; i+)cout setw(4) i ( char )i;if (k)% 12 =0)cout n ;k+;cout n ;class der_table:public :der_table(publicint p,tableint q,char *m):table(p,q)c = m;voidprint();protected :char *c;void der

22、_table:print()cout c table:ascii();n ;int main()der_table ob(a , z , ASCII value-char);();return0;#include using namespacestd;#include class area_c1protected :double height;double width;public :area_c1( double r, double s)height = r;width = s;virtualdouble area() =0;class rectangle : public area_c1p

23、ublic :rectangle( double r, double s):area_c1(r, s)virtual double area();double rectangle:area()return height * width;class isosceles : public area_c1public :isosceles( double r, double s):area_c1(r, s)virtual double area();double isosceles:area()return(height * width)/2;int main()rectangle r( 10, 5

24、);isosceles i( 4, 6);area_c1 *a;a = &r;cout 矩形的面积是: area() endl;a = &i;cout 三角形的面积是: area() endl;return 0;#include using namespacestd;#include class Timepublic :Time( int h, int m, int s)hours = h;minutes = m;seconds = s;void display()cout 出生时间: hours 时 minutes 分 seconds 秒 endl;protected :int hours, minutes, seconds;class Datep

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

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