c语言课后答案 (1).docx_第1页
c语言课后答案 (1).docx_第2页
c语言课后答案 (1).docx_第3页
c语言课后答案 (1).docx_第4页
c语言课后答案 (1).docx_第5页
全文预览已结束

下载本文档

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

文档简介

第9章 类与数据抽象(二)一、 选择题。在以下每一题的四个选项中,请选择一个正确的答案。【题9.1】C【题9.2】B【题9.3】A【题9.4】A【题9.5】D【题9.6】C【题9.6】B【题9.7】A【题9.8】D【题9.9】A【题9.10】A二、 填空题。请在下面各题的空白处填入合适的内容。【题9.11】析构函数波浪号 【题9.12】静态成员【题9.13】类对象指针【题9.14】cout”x=”x”,y=yendlcout”Delete x=”x”,y=”yendl【题9.15】缺省构造函数【题9.16】 析构函数【题9.17】1【题9.18】清理内存空间,删除类创建的对象【题9.19】返回值【题9.20】const三、 程序理解题。请阅读下面的程序,写出程序的运行结果。【题9.21】.i=16i=17【题9.22】constructor1Constructor2i=2130567168i=10DestructorDestructor【题9.23】Point 1,1 is deleted【题9.24】constructed by parameter5destructeddestructed四、 简答题。简要回答下列个问题。【题9.25】什么是常对象?答:常对象是指在任何场合都不能对其成员的值进行修改的对象。【题9.26】静态函数存在的意义?答:静态私有成员在类外不能被访问,可通过类的静态成员函数来访问;当类的构造函数是私有的时,不像普通类那样实例化自己,只能通过静态成员函数来调用构造函数。【题9.27】const char *p, char * const p;的区别答:如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量。如果const位于星号的右侧,const就是修饰指针本身,即指针本身是常量。【题9.28】构造函数和析构函数是否可以被重载,为什么?答:构造函数可以被重载,析构函数不可以被重载。因为构造函数可以有多个且可以带参数,而析构函数只能有一个,且不能带参数。【题9.29】在什么时候需要使用“常引用”(const)?答:如果既要利用引用提高程序的效率,又要保护传递给函数的数据不在函数中被改变,就应使用常引用。【题9.30】用static进行标识具有什么作用?主要应用于什么情况?答:(1)函数体内static变量的作用范围为该函数体,不同于普通变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;(2)在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;(3)在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;(4)在类中的static成员变量属于整个类所拥有,对类的所有对象只有一份拷贝;(5)在类中的static成员函数属于整个类所拥有,这个函数不接收this指针,因而只能访问类的static成员变量。【题9.31】用const进行标识具有什么作用?主要应用于什么情况?答:(1)欲阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对它进行初始化,因为以后就没有机会再去改变它了;(2)对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const;(3)在一个函数声明中,const可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值;(4)对于类的成员函数,若指定其为const类型,则表明其是一个常函数,不能修改类的成员变量;(5)对于类的成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为“左值”。 五、 编程题。对下面的问题编写成程序并上机验证。【题9.32】定义一个Dog类,它用静态数据成员Dogs记录Dog的个体数目,静态成员函数GetDogs用来存取Dogs。设计并测试这个类。参考答案:#include using namespace std;class Dog private:static int dogs; /静态数据成员,记录Dog的个体数目public:Dog() void setDogs(int a) dogs = a;static int getDogs() return dogs;int Dog:dogs = 25; /初始化静态数据成员int main() cout Before instantiate an object in class Dog: x = Dog:getDogs() endl;Dog a, b;cout x in a: a.getDogs() endl;cout x in b: b.getDogs() endl;a.setDogs(360);cout After x being set in a: endl;cout x in a: a.getDogs() endl;cout x in b: b.getDogs() endl;return 0;运行结果:Before instantiate an object in class Dog: x = 25x in a:25x in b:25After x being set in a:x in a:360x in b:360【题9.33】阅读下面类的定义,找出其中的错误,说明错误的原因并修正错误,编写程序验证。#includeclass Sprivate: int x,y,c;public:S (int i=0,int j=0,int k=0)x=i;y=j;c=k;void fun ( ) const ;void S: fun( ) constcoutx yendl;c+;答:类成员函数fun 被说明为常成员函数,因此它不能修改对象的数据成员,即语句C+是不对的。【题9.34】阅读下面类的定义,找出其中的错误,说明错误的原因并修正错误,编写程序验证。#includeclass Sample int n;public:Sample(int i) n = i;int getn() return n;int add(const Sample &s1, const Sample &s2) int sum = s1.getn() + s2.getn();return sum;void main() Sample s1(100), s2(200);cout sum= add(s1, s2) endl;答:常对象只能调用它的常成员函数,而不能调用其他成员函数。本例中add 函数中对一般成员函数getn 的调用是错误的。【题9.35】阅读下面类的定义,找出其中的错误,说明错误的原因并修正错误,给出正确程序的运行结果。#includeclass Sample public:void show(const char* string1, char string2 = abc) cout str

温馨提示

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

评论

0/150

提交评论