




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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(); s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/Z 27001-2025合格评定通用要素原则与要求
- GB/T 45394-2025信息技术网络空间测绘通用规范
- 子课题申报书的范例
- 2025年证券从业资格证考试应试策略与应对分析试题及答案
- 证券从业资格证的巅峰挑战试题及答案
- 2025年相关法规的证券从业资格试题及答案
- 三方协议手机买卖合同
- 注册会计师考试中学习禁忌与注意事项试题及答案
- 注册会计师在企业中的角色分析试题及答案
- 采购与供应链协同技术重点基础知识点
- 开曼群岛公司法2024版中文译本(含2024年修订主要内容)
- 大学物理(二)知到智慧树章节测试课后答案2024年秋湖南大学
- 2022年安徽省二级消防工程师《消防技术综合能力》考试题库(含真题、典型题)
- 大学体育与健康 教案全套 武术散打 第1-16周
- 手术患者液体管理
- 银行摄影营销方案
- 劳动课程设计烹饪教案
- GB/T 15688-2024动植物油脂不溶性杂质含量的测定
- 医院围手术期管理制度培训课件
- 设备巡检手册
- 药品零售业中可持续采购的最佳实践
评论
0/150
提交评论