10.1填空
a)使用继承和多态性有助于消除——逻辑。
b)在类定义中,将——置于虚函数的函数原型的末尾可以声明该函数为纯虚函数。
c)如果一个类包含一个或多个纯虚函数,则该类为——。
d)在编译时就解决的函数调用称为——关联。
e)在运行时才解决的函数调用称为——关联。
10.1 a)switch。
b)=O。
c)抽象基类。
d)静态。
e)动态。
10.2 什么是虚函数举一个适合使用虚函数的例子。
10.3 构造函数不能是虚函数。怎样使构造函数具有虚函数的效果
10.4 多态如何让程序“一般化”而不是“特殊化”。说明“一般化”编程的主要好处。
10.5 说明用switch逻辑编程的问题。请解释为什么多态可以代替switch逻辑。
10.6 区分静态关联与动态关联。请解释动态关联中虚函数和vtable的用法。
10.7 区分继承接口与继承实现的方法,继承接口的继承层次设计与继承实现的继承层次设计有什么不同
10.8 区分虚函数与纯虚函数。
10.9 (判断对错)抽象基类中所有虚函数都要声明为纯虚函数。
10.10 对本章介绍的Shape层次提出一层或几层抽象基类(第一层是Shape,第二层包括类 TwoDimensionalShape和ThreeDimensionalShape)。
10.11 多态如何促进可扩展性
10.12 要求开发一个详细描述图形输出的飞行模拟程序。说明多态对这类问题为什么特别有用。
10.13 开发一个基本图形包。用Shape类继承层次,只限于二维形状,如正方形、长方形、三角形和圆。并与用户交互,让用户指定每个形状的位置、尺寸、形状和填充字符。用户可以指定多个同一形状的项目。生成每个形状时,将每个新Shape对象的Shape*指针放在数组中。每个类有自己的draw成员函数。编写一个多态屏幕管理程序,遍历数组(可 用迭代器)。向数组中的每个对象发一个draw消息,形成屏幕图形。每次用户指定新形状时,重新输出屏幕图形。
10. 14 修改图10.1的工资系统,增加private数据成员birthData(Date对象)和departmentCode(int类型)到Employee中。假设工资系统每月处理一次。这样,程序计算每个员工的工资时(多态),遇到过生日的员工多发100美元奖金。
10.15 练习9.14开发了形状类Shape的层次结构,并在该结构中定义了若干类。修改该层次结构,使Shape成为一个包含接口(供层次结构中的类使用)的抽象基类。从类Shape派生出二维形状类TwoDimensionalShape和三维形状类ThreeDimensionalShape,它们也都是抽象类,然后用虚函数print输出每个类的类型和维数。为了计算类层次结构中每个具体类的对象,这两个类中还要包括虚函数are和volume。最后再编写一个驱动程序测试类Shape的层次结构。