C 第八章继承与派生习题习题解答

第八章 继承与多态习题

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

8.1 填空题

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

(2)派生类 (3)派生类 (4)基类

(5)派生类有一些新成员

(6)只能派生类强制转换为基类

8.1.2 当用public继承从基类派生一个类时,基类的public成员成为派生类的 (1) 成员,

protected成员成为派生类的 (2) 成员,对private成员是 (3) 。公有派生可以使其类的 (4) ,所以公有派生是主流。 答案:(1)public成员

(2)protected成员 (3)不可访问 (4)接口不变

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

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

(2)多重继承 (3)层次 (4)单继承

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

而后者是通过 (4) 和 (5) 来实现的。 答案:(1)编译时的

(2)运行时的

(3)函数和运算符的重载 (4)类继承关系 (5)虚函数 8.2 简答题(以下习题题号可能和教材不一致!)

8.2.1 构造函数和析构函数可以继承吗?派生类构造函数各部分的执行次序是怎样的? 答:构造函数和析构函数不可以继承。派生类构造函数各部分的执行次序是: 1. 调用基类构造函数,按它们在派生类声明的先后顺序,依次调用。

2. 调用新增成员对象的构造函数,按它们在类定义中声明的先后顺序,依次调用。 3. 派生类的构造函数体中的操作。

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

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

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

调用?为什么?

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

二. 编程与综合练习题(无)

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4