实验三.多态及虚函数和运算符重载

实验三.多态及虚函数和运算符重载

ID:31478068

大小:67.50 KB

页数:9页

时间:2019-01-11

实验三.多态及虚函数和运算符重载_第1页
实验三.多态及虚函数和运算符重载_第2页
实验三.多态及虚函数和运算符重载_第3页
实验三.多态及虚函数和运算符重载_第4页
实验三.多态及虚函数和运算符重载_第5页
资源描述:

《实验三.多态及虚函数和运算符重载》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、WORD格式整理版课程实验报告课程名称C++面向对象程序设计班级实验日期姓名学号实验成绩实验名称实验三多态与虚函数及运算符重载实验目的及要求1.理解运算符重载的重要性及好处,哪些运算符可以重载,和单、双目运算符重载时参数的特点。2.掌握运算符重载的方法。3.理解虚函数、纯虚函数及多态的概念,了解虚函数对多态性的支持,和静态多态性和动态多态性。4.理解虚函数在类的层次中的作用及虚函数的引入对程序运行时的影响,能够对使用虚函数的简单程序写出程序结果。实验环境windowsxpvc++6.0实验内容1.编写一个时间类time,包含时、分、秒等数据成员,实现

2、时间的加、减、输入和输出操作。其中加减通过重载相应运算符来实现。2.设计一个三角形类triangle,包含三角形三条边长的私有数据成员,另有一个重载运算符“+”,以实现求两个三角形对象的面积之和。3.分析程序的错误,分析原因并改正。4.下面的shape类是一个表示形状的抽象类,area()为求图形面积的函数。请从shape类派生三角形类(triangle)和圆类(circle),并给出具体的求面积函数。Classshape{public:virtualfloatarea()=0;};算法描述及实验步骤算法1BEGIN定义Time类;私有成员:定义Ho

3、ur,Minute,Second;公有成员:定义H,M,S并初始化;重载++;重载--;if->(H>=0&&H<24&&M>=0&&M<60&&S>=0&&S<60)时间错误;operator++;Second++;if->(Second>=60)Second-=60;Minute++;if->(Minute>=60)Minute-=60;Hour++;Hour%=24;范文范例参考WORD格式整理版operator--;Second--;if->(Second<=0)Second+=60;Minute--;if->(Minute<=0)Minut

4、e+=60;Hour--;Hour%=24;主函数:赋值time(23,59,59);输出;++time;输出;t=time++;输出输出赋值time(22,34,40)--time;输出t=time--;输出;输出;END算法2BEGIN定义Triangle类公有成员:定义三边并初始化operator+(Triangle&Triangle);私有成员:sidea,sideb,sidec;area();area算法:s=(sidea+sideb+sidec)/2;S=sqrt(s*(s-sidea)*(s-sideb)*(s-sidec));Tria

5、ngle::operator+(Triangle&Triangle){returnarea()+Triangle.area()}输出;主函数:定义a,b,c,i,j,k;cout->"请输入第一个三角形三边:";cin->a,b,ccout->"请输入第二个三角形三边:";cin->i,j,k;cout->"两个三角形面积之和为:"<-S2+S1范文范例参考WORD格式整理版END程序4BEGIN定义pi->3.14定义hape类公有:纯虚函数area()const=0定义Circle类继承publicshape公有:定义半径Rcout->"圆的面积

6、为:"<-R*R*pi私有:R;定义Triangle类继承publicshape公有:定义三角形三边A、B、C定义s;s=(A+B+C)/2;cout->"三角形的面积为:"<-sqrt(s*(s-A)*(s-B)*(s-C))私有:A,B,C;主函数:shape*p=NULL;定义r,s,a,b,c,A,B,C,S;cout->"请输入圆的半径=";cin->r;cout->"请输入三角形边长=";cout->"(中间请用空格隔开)";cin->a,b,c;p=&circle;p->area();p=▵p->area();END调

7、试过程及实验结果程序1程序2范文范例参考WORD格式整理版程序3程序4总结这次一共有四个实验。第一个和第二个都是对重载运算符的应用,但是很明显,第二个要比第一个复杂很多。第一个实验很简单,按照书上的例题一步步下来,一次成功;第二个实验的时候,我先把不需要重载的方法编了出来,但是在加入重载后屡试屡败。经过查找资料修改,最终也实验成功了。第三个是程序改错,主要错在派生类中的成员与基类不符,导致程序错误。将派生类的dispb()改为dispa(),程序就是正确的了。第四个实验,依然是由于对于运算符的重载的应用还不够熟练,所以多次出现错误,但是在互联网资料的

8、帮助下都得到了及时的修改。本次实验让我对于运算符重载有了更进一步的认识,同时也能更加熟练地运用,基本达到了实

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。