文档详情

C程序设计习题答案第八章.docx

发布:2024-03-08约3.19万字共31页下载文档
文本预览下载声明

第八章继承与派生习题 1

第八章 继承与多态习题

一.基本概念与基础知识自测题

填空题

如果类α继承了类β,则类α称为(1)类,而类β称为(2)类。(3)类的对象可作为(4)类的对象处理,反过来不行,因为(5)。如果强制转换则要注意(6)。

答案:(1)基类

派生类

派生类

基类

派生类有一些新成员

只能派生类强制转换为基类

当用public继承从基类派生一个类时,基类的public成员成为派生类的(1)成员,protected成员成为派生类的 (2) 成员,对private成员是(3) 。公有派生可以使其类的 (4) ,所以公有派生是主流。

答案:(1)public成员

protected成员

不可访问

接口不变

利用继承能够实现(1)。这种实现缩短了程序开发的时间,VC++中的(2)很好地体现了这一点。

答案:(1)代码的复用

(2)MFC编程

一个派生类只有一个直接基类的情况称为 (1) ,而有多个直接基类的情况称为

(2) 。继承体现了类的 (3)概念,这在MFC中得到了很好表现,MFC中只采用了(4)。

答案:(1)单继承

多重继承

层次

单继承

C++中多态性包括两种多态性: (1) 和 (2) 。前者是通过(3)实现的,而后者是通过 (4)和 (5) 来实现的。

答案:(1)编译时的

运行时的

函数和运算符的重载

类继承关系

虚函数

在基类中将一个成员函数说明成虚函数后,在其派生类中只要(1) 、(2) 和

第八章继承与派生习题 2

(3)完全一样就认为是虚函数,而不必再加关键字 (4) 。如有任何不同,则认为是(5)而不是虚函数。除了非成员函数不能作为虚函数外, (6)、(7)和 (8)也不能作为虚函数。

答案:(1)同虚函数名

同参数表

同返回类型。如基类中返回基类指针,而派生类中返回派生类指针是允许的

irtual

重载

静态成员函数

内联函数

构造函数

纯虚函数定义时在函数参数表后加(1),它表明程序员对函数 (2),其本质是将指向函数体的指针定为(3)。

答案:(1)=0

不定义

NULL

简答题

构造函数和析构函数可以继承吗?派生类构造函数各部分的执行次序是怎样的?答:构造函数和析构函数不可以继承。派生类构造函数各部分的执行次序是:

调用基类构造函数,按它们在派生类声明的先后顺序,依次调用。

调用新增成员对象的构造函数,按它们在类定义中声明的先后顺序,依次调用。

派生类的构造函数体中的操作。

什么叫派生类的同名覆盖(override)?

答:如果派生类声明了一个和某个基类成员同名的新成员(当然如是成员函数,参数表也必须一样,否则是重载),派生类中的新成员就屏蔽了基类同名成员,类似函数中的局部变量屏蔽全局变量。称为同名覆盖(override)。

派生类的析构函数中需完成什么任务?是否要编写对基数和成员对象的析构函数的调用?为什么?

答:析构函数的功能是作善后工作,析构函数无返回类型也没有参数,情况比较简单。派生类析构函数定义格式与非派生类无任何差异,不要编写对基数和成员对象的析构函数的调用,只要在函数体内把派生类新增一般成员处理好就可以了,因为对新增的成员对象和基类的善后工作,系统会自己调用成员对象和基类的析构函数来完成。

为什么要使用虚基类?怎样定义虚基类?用一个实例来解释虚基类在其派生类中的存储方式。

答:在多重继承是有可能出现同一基类的两个拷贝,为避免这种情况,可使用虚基类。虚基类(virtualbaseclass)定义方式如下:

class派生类名:virtual访问限定符基类类名{...};class派生类名:访问限定符virtual基类类名{...};virtual关键字只对紧随其后的基类名起作用。

第八章继承与派生习题 3

如下派生:

classPerson

intNo

身份证号

……

classPerson

intNo

身份证号

……

classStudent

intNo

学生号

……

classEmployee

intNo

工作证号

……

classGStudent

intNo

研究生号

……

classEGStudentintNo

在职学号

……

Person成员Student新成员GStudent新成员

Person成员Employee新成员EGStudent新成员

Person

Person

Student

GStudent

Employee

EGStudent

(a)派生关系 (b)存储图

存储关系如(b),在职研

显示全部
相似文档