湖北理工(黄石理工)C++实验 实验三多态性
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验3 多态性
实验课程名:面向对象程序设计(C++)
专业班级:09计科(一)班学号:2******** 姓名:***** 实验时间:12.6 实验地点:K4-102 指导教师:祁文青
{
cout<<"D::f3(double)"<<3*x< } }; int main() { D d; B*pb=&d; D*pd=&d; pb->f1(1.23); pb->f1(1.23); pb->f2(1.23); pb->f3(1.23); pb->f3(3.14); return 0; } 程序的运行结果。 答: 2.编写一个程序,其中设计一个时间类Time,用来保存时、分、秒等私有数据成员,通过重载操作符“+”实现两个时间的相加。要求将小时范围限制在大于等于0,分钟范围限制在0~59,秒钟范围限制在0~59秒。 【提示】 时间类Time{ public: Time(int h=0,int m=0,int s=0); Time operator+(Time&); void disptime(string); private: int hourse; cout< } int main() { int hh,mm,ss; do { cout<<"输入第一个时间时分秒(例如2 30 42)"< cin>>hh>>mm>>ss; } while(hh<0||mm<0||mm>59||ss<0||ss>59); Time t(hh,mm,ss); do { cout<<"输入第二个时间时分秒(例如2 30 42)"< cin>>hh>>mm>>ss; } while(hh<0||mm<0||mm>59||ss<0||ss>59); Time T(hh,mm,ss),t_total; t_total=t+T; t_total.disptime("输出结果(时/分/秒):"); return 0; } 程序运行结果: 3.给出下面的抽象基类container; class container { protected: double radius; public: container(double radius1); virtual double surface_area()=0; virtual double volume()=0; }; 要求建立3个继承container的派生类cube、sphere与cylinder,让每一个派生类都包含虚函数surface_area()和volume(),分别用来计算正方体、球体和圆柱体的表面积及体积。要求写出主程序,应用C++的多态性,分别计算边长为6.0的正方体、半径为5.0的球体,以及半径为5.0和高为6.0的圆柱体的表面积和体积。 实验代码: double CylinderArea(double r, double h){ return 3.14159*r*r*2+2*3.14159*r*h;}//计算圆柱体体积double CylinderV olume(double r, double h){ return 3.14159*r*r*h;}//计算球体表面积double BallArea(double r){return 4*3.14159*r*r;}//计算球体体积double BallV olume(double r){return 4*3.14159*r*r*r/3.0;}//计算正方体表面积double CubicArea(double r){return r*r*6;}//计算正方体体积double CubicV olume(double r){return r*r*r;}//计算长方体表面积double CuboidArea(double a, double b,double c){return a*b*2+b*c*2+a*c*2;}//计算长方体体积double CuboidV olume(double a, double b, double c){return a*b*c;} 实验运行结果: 4.编写一个程序,用于进行集合的并、差和交运算。例如输入整数集合{9 5 4 3 6 7}和{2 4 6 9 },计算出它们进行集合的并、差和交运算后的结果。 【提示】 i.可用以下表达式实现整数集合的基本运算: s1+s2 两个整数集合的并运算 s1-s2 两个整数集合的差运算 s1*s2 两个整数集合的交运算 ii.参考以下Set类的框架,用于完成集合基本运算所需的各项功能。 class set{ public: set::set(); void set::input(int d); int set::length();