湖北理工(黄石理工)C++实验实验三多态性#精选_第1页
湖北理工(黄石理工)C++实验实验三多态性#精选_第2页
湖北理工(黄石理工)C++实验实验三多态性#精选_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、 x) coutB:f2(double)2*xe ndl;void f3(double x) coutB:f3(double)3*xe ndl;class D:public Bpublic:virtual void f1(double x)coutD:f1(double)xe ndl;void f2(double x)coutD:f2(double)2*xe ndl;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(i nt h=0,i nt m=0,i nt s=0);Time operator+(Time&);void disptime(stri ng);private:int hourse;int mi nu tes;int sec on ds;;实验代码:#in clude#in cludeusing n amespace std;class Timepubli

4、c:Time(i nt h=0,i nt m=0,i nt s=0);Time operator+(Time&); void disptime(stri ng); private:inthourse;intmi nu tes;intsec onds;Time:Time(int h,int m,int s)hourse=h;minu tes=m;sec on ds=s;Time Time: operator+(Time&t1)Time p;p.sec on ds=sec on ds+t1.sec on ds; int temp=p.sec on ds;p.sec on ds=temp%60;p.

5、mi nu tes=mi nu tes+t1.mi nu tes+temp/60; temp=p.mi nu tes;p.minu tes=temp%60;p.hourse=hourse+t1.hourse+temp/60;return p;void Time: disptime(string s)coutshourse: minu tes:sec on dse ndl;int mai n()int hh,mm,ss;docout输入第一个时间时分秒(例如 2 30 42) hhmmss;while(hh0|mm59|ss59);Time t(hh,mm,ss);docout输入第二个时间时分

6、秒(例如 2 30 42) hhmmss;while(hh0|mm59|ss59);Time T(hh,mm,ss),t_total;t_total=t+T;t_total.disptime(输出结果(时/分/秒):);return 0;程序运行结果:3. 给出下面的抽象基类con tai ner;class containerprotected: double radius;public:contain er(double radiusl);virtual double surface_area()=0;virtual double volume()=0;;要求建立3个继承con tai n

7、er的派生类cube、sphere与cyli nder,让每一个派生类都包含 虚函数surface_area()和volume。,分别用来计算正方体、球体和圆柱体的表面积及体积。要求写出主程序,应用C+的多态性,分别计算边长为6.0的正方体、半径为 5.0的球体,以及半径为5.0和高为6.0的圆柱体的表面积和体积。实验代码:double Cyli nderArea(double r, double h) return 3.14159*r*r*2+2*3.14159*r*h;计算圆柱体体积 double CylinderV olume(double r, double h) return 3.1

8、4159*r*r*h; 计算球体表面 积 double BallArea(double r)return 4*3.14159*r*r;计算球体体积 double BallV olume(doubler)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;/ 计算长方体表面积doubleCuboidArea(double a, double b,double c)return a*b*2+b*c*2+a

9、*c*2;/计算长方体体积 doubleCuboidVolume(double a, double b, double c)retur n a*b*c;实验运行结果:I 叵 5*1p*DtbuqH| Debuoi2 3 .rx?-pp 2 I Dii78仙56 78 90co4. 编写一个程序,用于进行集合的并、差和交运算。例如输入整数集合9 5 4 3 6 7和2 4 69,计算出它们进行集合的并、差和交运算后的结果。【提示】i. 可用以下表达式实现整数集合的基本运算: S1+S2两个整数集合的并运算S1-S2两个整数集合的差运算 s1*s2 两个整数集合的交运算ii. 参考以下Set类的框架,用于完成集合基本运算所需的各项功能。class setpublic:set:set();void set:i nput(i nt d);int set:le ngth();int set:getd(i nt i); void set:disp();set set:operator+(set

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论