实验五 虚函数与多态性
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五 虚函数与多态性(4学时)
[实验目的]
1、 掌握运算符重载的基本方法;掌握虚函数的定义与使用方法。
2、 理解静态多态性和动态多态性;掌握使用虚函数和继承实现动态多态性的方法。 [实验内容与步骤]
1、 定义Pomt 类,包含有坐标x ,y 两个成员变量,对Pomt 类重载运算符 ++(功能:坐标值x ,y 增1)和 --(功能:坐标值x ,y 减1),实现对坐标值的增减。
2、 定义一个车(vehicle )基类,有Run 、Stop 等成员函数,由此派生出自行车(bicycle )类、汽车(motorcar )类,从vehicle 和motorcar 派生出摩托车(motorcycle )类,它们都有Run 、Stop 等成员函数。观察虚函数的作用。
3、 对实验三中的people 类重载运算符 == 和 = 。其中,== 用于判断两个people 类对象的id 属性是否相等;= 则实现对people 类对象的赋值操作。
4、 定义矩阵类,重载运算符 + 和 *,实现对矩阵类对象的相加和相乘。
5、 定义一个类BaseFly ,该类中有一个 Fly ()函数。再定义三个类 BirdFly 、DragonFly 和 PlaneFly ,都继承自 BaseFly ,并重载 Fly ()函数。用各类指针调用各个类对象的 Fly ()函数,体会继承的多态性。
6、 将 BaseFly ∷Fly( ) 函数声明为 virtual ,体会虚函数在多态性中的作用。 [习题与思考题]
1、 建立一个类 convert ,它含有两个私有数据成员 x 与 y ,用于表示直角坐标的位置;另外含有两个私有成员函数getr( )与 getangle( ),用于将直角坐标转换为极坐标。重载运算符 +,使能执行convert 类对象的相加运算。
直角坐标(x ,y )转换为极坐标(r ,θ)的公式为:
π
θ180tan 122⨯=+=-x y y x r , 2、 创建字符串类string ,重载运算符 +,使能实现两个字符串的连接;重载运算符 =,使能实现字符串赋值。
3、 针对字符串类string ,重载运算符 <、 > 与 ==,使能实现字符串的比较运算。
4、 针对字符串类string ,重载运算符 +=,使能实现字符串的追加赋值。
5、 声明一个基类shapes ,其中含有protected 类型的数据成员x 、y 和 r ,分别代表矩形的长、宽及圆的半径值。成员函数 insquare ()用于设置数据成员x 、y 的初值,成员函数 incircle ()用于设置数据成员r 的初值。定义 show_area ()为纯虚函数。声明类square 及circle 为shapes 的派生类,其成员函数 show_area ()分别用来计算矩形和圆的面积。
6、 定义一个日期类,含年、月、日3个int 型成员变量,实现运算符 +,- 的重载。其中,运算符 + 实现日期加上一个天数,得到新日期;运算符 - 实现日期减去一个天数,得到新日期。
7、 定义以一个复数类,实现运算符 +,-,*,/,=,== 的重载。