当前位置:文档之家› 虚函数与多态性(110526)_练习题

虚函数与多态性(110526)_练习题


3、(选做题) 某学校对教师每月工资的计算规定如下:固定工作+课时补 贴。教授的固定工作为5000元,每个课时补贴50元;副教授 的固定工资为3000元,每个课时补贴30元;讲师的固定工资 为2000元,每个课时补贴20元。定义教师抽象类,派生不同 职称的教师类,编写程序求若干个教师的月工资。
#include<iostream.h> class Rational { public : Rational (long n , long d=1) ; // 构造函数,把长整型转换成Rational类型 friend Rational operator+ ( const Rational & ,const Rational & ) ; friend ostream &operator<<(ostream &os, Rational &s); operator double() ; // 类型转换函数 private : long Numerator , Denominator ; }; Rational :: Rational(long n, long d) { Numerator = n ; Denominator = d ; } Rational :: operator dou Numerator ) / double( Denominator ); } Rational operator+ ( const Rational & r1, const Rational & r2 ) { long n , d ; n = r1.Numerator * r2.Denominator + r1.Denominator * r2.Numerator ; d = r1.Denominator * r2.Denominator ; return Rational( n, d ) ; }
实验内容——作业 作业 实验内容 1、编写一个程序,定义抽象基类Shape,由它派生出5个 派生类:Circle(圆形)、Square(正方形)、Rectangle(矩形 )、Trapezoid(梯形)、Triangle(三角形)。用虚函数分别计 算几种图形面积。要求用基类指针数组,使它每一个元 素指向一个派生类对象。 2 2、使用虚函数编写程序,求球体和圆柱体的体积和表面 积。由于球体和圆柱体都可以看做由圆继承而来,所以 可以定义圆类circle作为基类。在circle类中定义一个数 据成员radius和两个虚函数area()和volume()。由circle类 派生sphere类和column类。在派生类中对虚函数area()和 volume()重新定义,分别求球体和圆柱体的体积及表面 积。
ostream &operator<<(ostream &os, Rational &s) { os << s.Numerator << "/" << s.Denominator ; return os; } void main ( ) { Rational a( 2, 4 ), b = (1, 2), c( 0 ) ; c = a + b; // 使用友员重载 “+” 和 缺省重载 “=”
相关主题