C++面向对象程序设计教程第3版陈维兴林小茶课后习题答案Word文件下载.docx
- 文档编号:15978394
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:45
- 大小:97.75KB
C++面向对象程序设计教程第3版陈维兴林小茶课后习题答案Word文件下载.docx
《C++面向对象程序设计教程第3版陈维兴林小茶课后习题答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《C++面向对象程序设计教程第3版陈维兴林小茶课后习题答案Word文件下载.docx(45页珍藏版)》请在冰豆网上搜索。
4)对象的行为可以分为两类:
一类是作用于自身的行为,另一类是作用于其他对象的行为。
例如一个教师是一个对象。
每个教师对象有自己的名字来和别的教师区别。
教师具有编号,姓名,年龄,职称,专业等属性。
教师拥有走路,吃饭,授课等行为操作。
走路,吃饭是作用于自身的行为,授课是作用于其他对象的行为。
1.4什么是消息?
消息具有什么性质?
一个对象向另一个对象发出的请求成为“消息”。
消息具有以下3个性质:
1)同一个对象可以接收不同形式的多个消息,做出不同的相应;
2)相同形式的消息可以传递给不同的对象,所做出的响应可以是不同的;
3)对消息的响应并不是必须的,对象可以响应消息,也可以不响应。
1.5什么是抽象和封装?
抽象是将有关事物的共性归纳、集中的过程。
例如:
把所有具有大学生学籍的人归为一类,成为“大学生”,这就是一个抽象。
封装是指把数据和实现操作的代码集中起来放在对象内部,并尽可能隐藏对象的内部细节。
每一台洗衣机都有出厂日期、机器编号等属性,也有启动、暂停、选择等操作。
人们在使用洗衣机的时候只需要按下对应的按钮,而不用关心具体的内部实现。
这就是封装。
1.6什么是继承?
继承就是允许派生类使用基类的数据和操作,同时,派生类还可以增加新的操作和数据。
哺乳动物是一种热血、有毛发、用奶哺育幼崽的动物;
狗是有犬牙、食肉、特定的骨骼结构、群居的哺乳动物。
狗就继承了哺乳动物。
1.7若类之间具有继承关系,则他们之间具有什么特征?
若类之间具有继承关系,则他们之间具有下列几个特征:
1)类间具有共享特征(包括数据和操作代码的共享);
2)类间具有差别或新增部分(包括非共享的数据和操作代码);
3)类具有层次结构。
1.8什么是单继承、多继承?
单继承是指每个派生类只直接继承了一个基类的特征。
例如狗继承自哺乳动物。
多继承是指多个基类派生出一个派生类的继承关系。
比如玩具车同时继承自玩具和车。
1.9什么是多态?
多态是指不同的对象收到相同的消息时执行不同的操作。
例如,有一个窗口类对象,还有一个棋子类对象。
当我们发出“移动”消息时,两个对象的行为不同。
1.10面向对象程序设计的主要优点是什么?
1.可提高程序的重用性;
2.可控制程序的复杂性;
3.可改善程序的可维护性;
4.能够更好地支持大型程序设计;
5.增强了计算机处理信息的范围;
能够很好地适应新的硬件环境。
2.1简述C+勺主要特点1)C+是C的超集,保持与C的兼容。
2)保持了C的简洁、咼效和接近汇编语言等特点,并对C的功能作了不少扩充。
用C+编写的程序比C更安全,可读性更好,代码结构更为合理。
3)程序质量高。
4)增加了面向对象机制。
2.2#includeusingnamespacestd;
intmain()inta,b,d,min;
coutab;
min=ab?
b:
a;
for(d=2;
dmin;
d+)if(a%d)=0)&
(b%d)=0)break;
if(d=min)coutNocommondenominatorsendl;
return0;
coutThelowestcommondenominatorisdendl;
2.3有效2.4没有函数声明;
函数定义没有写返回值类型。
2.5
(1)等价,函数声明可以省略参数的名字。
(2)不等价,第二个的函数定义不能省略参数的名字。
2.6-2.10CDAAB2.11-2.15ACBDC2.16-2.17DC2.181012.1910102.2010202.21举例说明可以使用const替代#define以消除#define的不安全性。
#includeusingnamespacestd;
intmain()inta=1;
#defineT1a+a#defineT2T1-T1T2endl;
coutT2isreturn0;
上面这个程序,初看应该输出T2is0但是实际上,得出T2is2#includeusingnamespacestd;
intmain()int*pi=newint20;
*pi=1;
pi1=1;
for(inti=2;
i20;
i+)pii=pii-2+pii-1;
2.23重载sroot函数,输出一个数的二次方根。
doublesroot(intnum)return(double)sqrt(double)num);
doublesroot(longnum)return(double)sqrt(double)num);
doublesroot(doublenum)return(double)sqrt(num);
intmain()return0;
2.24解决百钱问题。
将一元人民币换成1、2、5分的硬币,有多少种换法?
intmain()intnum=for(inti=0;
/总共换法的总数。
初始化为0。
0;
i=100;
i+)for(intj=0;
j100)break;
for(intk=0;
k=20;
k+)if(i+2*j+5*k)=100)num+;
cout1分i个;
2分j个;
5分k个;
100)break;
coutnumendl;
2.25输入两个整数,按由小到大的顺序输出。
要求使用变量的引用。
voidswap(int&
a,int&
b)a:
a:
=a+b;
=a-b;
intmain()inta,b;
cinab;
if(ab)swap(a,b);
couta,bendl;
2.26用二分法求解f(x)=0的根。
doubleFun(doublex)return35*x+25;
/假设f(x)=35x+25intmain()doublea,b;
cina;
if(Fun(a)=0)coutx=ab;
while(Fun(a)*Fun(b)=0);
if(Fun(b)=0)coutx=bb)a=a+b;
b=a-b;
a=a-b;
while
(1)if(Fun(a+b)/2)=0)coutx=(a+b)/2endl;
if(Fun(a)*Fun(a+b)/2)0)b=(a+b)/2;
if(Fun(b)*Fun(a+b)/2)0)a=(a+b)/2;
3.1类声明的一般格式是什么?
class类名private:
私有数据成员和成员函数public:
公有数据成员和成员函数3.2构造函数和析构函数的主要作用是什么?
它们各自有什么特性?
构造函数是一种特殊的成员函数,它主要用于为对象分配空间,进行初始化。
构造函数的名字必须与类名相同,而不能由用户任意命名。
它可以有任意类型的参数,但不能具有返回值类型。
析构函数通常用于执行一些清理任务,如释放分配给对象的内存空间等。
析构函数名与类名相同,但它前面必须加一个波浪号。
不能有返回值,也不能有参数。
3.3什么是对象数组?
所谓对象数组,是指每一个数组元素都是对象的数组。
3.4什么是this指针?
它的主要作用是什么?
C+为成员函数提供了一个名为this的指针,这个指针称为自引用指针。
每当创建一个对象时,系统就把this指针初始化为指向该对象。
一个类的所有对象合用一份成员函数,this指针可以帮助对象辨别出当前调用的是自己的那个对象的数据成员和函数。
3.5友元函数有什么作用?
友元函数可以在类的外部访问类的私有成员或保护成员。
3.6
(1)声明并定义了P2,P3,并用默认无参构造函数初始化。
(2)声明并定义了P2,并调用Point类的拷贝构造函数用P1对P2进行初始化。
(3)声明并定义了P2,并调用Point类的拷贝构造函数用P1对P2进行初始化。
(4)调用拷贝构造函数,将P1的成员值赋值给P4的成员。
3.7-3.10BCCB3.11-3.15BAABA3.16-3.17BB3.1810,2030,4850,6870,8090,1611,1203.19Constructing10100Destructing3.203objectsinexistence4objectsinexistenceafterallocation3.213.223.233.243objectsinexistenceafterdeletionCountingat0Countingat9Defaultconstructorcalled.Defaultconstructorcalled.Defaultconstructorcalled.Construcotor:
a=1,b=2Construcotor:
a=3,b=4Construcotor:
a=5,b=6Con.Copycon.default.Copycon.A=5B=14A=9B=143.253.265,722.25ConstructingConstructingA=5B=15A=10B=15DestructingDestructing3.273.28Student:
voidpintStu();
函数只有声明,没有定义age是私有成员,不能用对象直接调用。
voidprintStu()和voidsetSno(ints)没有加限定符voidsetAge(inta)在类中没有声明3.29构造函数不能定义为私有。
否则无法创建对象3.30下面是一个计算器类的定义,请完成该类成员函数的实现。
gclasscounterpublic:
/给原始值加1/给原始值减1/取的计数器值/显示计数counter(intnumber);
voidincrement();
voiddecrement();
intgetvalue();
intprint();
private:
intvalue;
counter:
counter(intnumber)value=number;
voidcounter:
increment()+value;
decrement()-value;
intcounter:
getvalue()returnvalue;
print()coutvalue
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 面向 对象 程序设计 教程 版陈维兴林小茶 课后 习题 答案