习题6
基本概念题:
9.1 什么叫运行时的多态性?动态绑定和运行时的多态性有什么关系? 9.2 什么叫虚函数?虚函数怎样实现运行时的多态性?
9.3 虚函数方法和派生类对基类成员函数覆盖方法有哪些相同之处和不同之处?
9.4 虚析构函数有什么作用?
9.5 什么叫抽象类?抽象类有什么用途? 9.6 怎样用纯虚函数方法设计抽象类? 9.7 空的虚函数和纯虚函数有什么区别? 9.8 虚函数怎样实现运行时的多态性? 9.9 纯虚函数可以实现运行时的多态性吗?
程序阅读和设计题:
9.10 阅读程序,给出运行结果:
#include
virtual void Set(int b){x=b;} virtual int Get(){ return x;} private: int x; };
class Derived: public Base { public:
void Set(int d){y = d;} int Get(){return y;} private: int y; };
void main( ) {
37
Base B_obj; Derived D_obj; Base *p=&B_obj; p->Set(100);
cout<<\ p=&D_obj; p->Set(200);
cout<<\ p->Base::Set(300);
cout<<\ p->Set(p->Get()+200);
cout<<\}
9.11 编写计算正方体、圆柱体、球体的表面积和体积的类。要求: (1)这三个类有一个公共的基类;
(2)这三个类计算正方体、圆柱体、球体的表面积和体积的成员函数名字相同; (3)按照运行时的多态性方法设计一个测试主函数,并进行测试。
9.12 设计一个异质链式堆栈类。要求堆栈中既可以保存int类型数据,也可以保存char类型数据。 (提示:(1)设计一个结点基类,再公有派生int类型的结点类和char类型的结点类;(2)主函数中用运行时的多态性方法构造链式堆栈。这样就可以构造出异质链式堆栈。)
9.13 设计一个异质链式队列类。要求队列中既可以保存int类型数据,也可以保
存char类型数据。
38
习题7
基本概念题:
9.1 常规方法是怎样设计处理方法相同、仅参数的数据类型不同的通用函数的? 9.2 什么叫参数多态性?什么叫模板?模板方法是怎样解决参数多态性问题的? 9.3 解释函数模板和模板函数。
9.4 解释类模板和模板类。类模板和模板类,哪个可以用来创建对象? 9.5 解释模板形参、模板实参和参数实例化。
9.6 写出函数模板的语句格式。说明函数模板的使用方法。 9.7 写出类模板的语句格式。说明类模板的使用方法。
程序设计题:
9.8 设计一个分数类模板。要求:
(1)分数类模板中包含的分数运算有:两个分数的加、减、乘、除运算。 (2)分数的输出格式是:分子/分母。
(3)测试程序中分子和分母既可以同时为int类型,也可以同时为float类型。 9.9 设计一个在三个数值中找出最大数值的函数模板。并设计一个测试程序进行测试。测试程序中三个数值既可以同时为int类型,也可以同时为float类型。 9.10 设计复数类模板。要求:
(1)复数类模板中包含的复数运算有:两个复数的加、减、乘、除运算,一个复数和一个实部数值的加、减、乘、除运算。 (2)设计一个测试程序进行测试。
9.11 设计单链表类模板。要求:
(1)单链表类模板中包含的单链表操作有:在单链表的某个位置插入一个数据元素,删除单链表某个位置中的数据元素。 (2)设计一个测试程序进行测试。
39
习题8
基本概念题:
9.1 什么是异常?举出程序中常见异常的例子。 9.2 简述异常处理的基本思想和方法?
9.3 对比传统异常处理的设计方法和本章讨论的异常处理的设计方法,说明本章讨论的异常处理有什么优点?
9.4 简述throw语句、try语句和catch语句的功能。 9.5 简述异常类的作用和设计方法。 9.6 当同时可能出现多个异常时, try-catch的不同排列顺序对异常处理有什么影响?
9.7 异常抛出和处理的方式有几种?在什么情况下,应该采用第一种方式?在什么情况下,应该采用第二种方式?
9.8 异常处理和程序的健壮性有什么关系?
9.9 C++异常处理的基本思想和基本方法是什么?
9.10 C++的throw-try-catch异常处理方法和C语言if语句的错误处理方法相比,有什么优点?
9.11 说明异常抛出和处理的两种方式。说明当异常类非空时,异常类在异常处理中有什么作用?
程序设计题:
9.12 设计一个考虑异常情况的模板堆栈类。并设计一个测试程序进行测试。 9.13 设计一个包括考虑异常情况的分数类和一个测试程序。 要求:(1)异常的抛出和处理采用第一种方式; (2)异常的抛出和处理采用第二种方式。
9.14 设计一个考虑邮件地址异常情况的邮件地址类。当用户输入的邮件地址不合法时,抛出异常。并设计一个包括异常处理的测试程序。
40