湖北理工(黄石理工)C++实验 实验三多态性.doc

上传人:大张伟 文档编号:5657047 上传时间:2020-07-20 格式:DOC 页数:6 大小:120.50KB
返回 下载 相关 举报
湖北理工(黄石理工)C++实验 实验三多态性.doc_第1页
第1页 / 共6页
湖北理工(黄石理工)C++实验 实验三多态性.doc_第2页
第2页 / 共6页
湖北理工(黄石理工)C++实验 实验三多态性.doc_第3页
第3页 / 共6页
湖北理工(黄石理工)C++实验 实验三多态性.doc_第4页
第4页 / 共6页
湖北理工(黄石理工)C++实验 实验三多态性.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《湖北理工(黄石理工)C++实验 实验三多态性.doc》由会员分享,可在线阅读,更多相关《湖北理工(黄石理工)C++实验 实验三多态性.doc(6页珍藏版)》请在三一文库上搜索。

1、 实验3 多态性实验课程名:面向对象程序设计(C+)专业班级: 09计科(一)班 学号: 2* 姓名: * 实验时间: 12.6 实验地点: K4-102 指导教师: 祁文青 一、实验目的和要求(1) 了解多态性的概念。(2) 掌握运算符重载的基本方法。(3) 掌握虚函数的定义和使用方法。(4) 掌握纯虚函数和抽象类的概念和用法。二、实验内容1.分析并调试下列程序,写出程序的输出结果,并解释输出结果。#includeusing namespace std;class Bpublic:virtual void f1 (double x)coutB:f1(double)xendl;void f2(

2、double x)coutB:f2(double)2*xendl;void f3(double x)coutB:f3(double)3*xendl;class D:public Bpublic:virtual void f1(double x)coutD:f1(double)xendl;void f2(double x)coutD:f2(double)2*xendl;void f3(double x)coutD:f3(double)3*xf1(1.23);pb-f1(1.23);pb-f2(1.23);pb-f3(1.23);pb-f3(3.14);return 0;程序的运行结果。答:2.

3、编写一个程序,其中设计一个时间类Time,用来保存时、分、秒等私有数据成员,通过重载操作符“+”实现两个时间的相加。要求将小时范围限制在大于等于0,分钟范围限制在059,秒钟范围限制在059秒。【提示】时间类Timepublic:Time(int h=0,int m=0,int s=0);Time operator+(Time&);void disptime(string);private: int hourse; int minutes; int seconds;实验代码:#include#includeusing namespace std;class Timepublic: Time(i

4、nt h=0,int m=0,int s=0); Time operator+(Time&); void disptime(string);private: int hourse; int minutes; int seconds;Time:Time(int h,int m,int s) hourse=h; minutes=m; seconds=s;Time Time: operator+(Time&t1)Time p;p.seconds=seconds+t1.seconds;int temp=p.seconds; p.seconds=temp%60; p.minutes=minutes+t1

5、.minutes+temp/60;temp=p.minutes; p.minutes=temp%60; p.hourse=hourse+t1.hourse+temp/60; return p;void Time: disptime(string s)coutshourse:minutes:secondsendl;int main()int hh,mm,ss;docout输入第一个时间时分秒(例如2 30 42)hhmmss;while(hh0|mm59|ss59);Time t(hh,mm,ss);docout输入第二个时间时分秒(例如2 30 42)hhmmss;while(hh0|mm59

6、|ss59);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,让每一个派生类

7、都包含虚函数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 CylinderVolume(double r, double h) return 3.14159*r*r*h;/计算球体表面积double BallArea(dou

8、ble r)return 4*3.14159*r*r;/计算球体体积double BallVolume(double r)return 4*3.14159*r*r*r/3.0;/计算正方体表面积double CubicArea(double r)return r*r*6;/计算正方体体积double CubicVolume(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 CuboidVolume(double

9、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(); int set:getd(int i); void set:disp(); set set:operator+(set s1); set set:operator-(set s1); set set:operator*(set s1); set set:operator=(set s1); protected: int len; int sMAX; ;3、 结论

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1