课程实验报告课程名称C++面向对象程序设计班级姓名实验名称实验目的及要求学号实验日期实验成绩实验一类和对象《运算符重载》1、理解运算符重载的重要性及好处2、理解那些运算符可以重载而那些不能重载3、理解单目运算符和双目运算符重载时特点4、熟练掌握一般运算符重载的方法5、掌握特殊运算符重载的方法《多态与虚函数》1、理解静态联编和动态联编,理解多态的概念2、理解虚函数在类的继承层次中的作用及虚函数的引入对程序运行时的影响,能够对使用虚函数的简单程序写出运行结果3、了解虚函数对多态性的支持4、掌握虚函数和纯虚函数的概念5、理解静态多态性和动态多态性,学习使用虚函数的继承实现动态多态性6、了解抽象类的概念VC++6.01、编写一个时间类time,包含时、分、秒等数据成员,实现时间的加、减、输入和输出操作。其中加减通过重载运算符来实现2、设计一个三角形类triangle,包含三角形三条边长的私有数据成员,另有一个重载运算符‘+’,以实现两个三角形的面积之和。分析提示:在triangle类中设计一个友元函数operator+(trianglet1,trianglet2),它重载运算符‘+’,返回t1和t2两个三角形的面积之和3、分析程序错误,分析原因并改正4、下面的shape类是一个表示形状的抽象类,area()为求图形面积的函数。请从shape类派生三角形类(triangle)和圆类(circle),并给出具体的求面积函数1)timeTime类-hour:int;-mintue:int;-second:int;+get();+disp();+operator+();+operator-();实验环境实验内容算法描述及实验步骤2)求两个三角形的面积之和triangle类-p:double-sp:double-a:int-b:int-c:int+triangle(inta,intb,intc)+voiddisp()+frienddoubleoperator+(trianglet1,trianglet2)3)A类-x:int+virtualintdisp()+show(A&p)+A(inti)B类-y:int+virtualintdisp()+B(inti.intj)4)Shape类+virtualfloatarea()triangle类-a:int-b:int-c:int-s:float-p:float+triangle()+virtualfloatarea()circle类-r:float+circle(floatr)+virtualfloatarea()调试过程及实验结果总结这一次实验中,运算符重载的这一部分,对于如何去实现输入时间、输入三角形的三边长,我遇到了一些困难,一开始的时候我只是在主函数中初始化了triangle的对象,使它们调用求面积函数,而不是通过在运行窗口中直接输入求得,后来我通过查看课本上的实例,通过get()函数来获取。在编写time类时,一开始由于编写的重载运算符的友元函数operator+()中的算法错误,使得输出的两时间的和不对,经过修改后得出了正确的结果在多态与虚函数这一部分,通过使用纯虚函数,了解了纯虚函数的使用方法,以及抽象类的定义1、#includeclasstime{public:{cout<<"请输入时间:";cin>>hour>>mintue>>second;if(hour>=0&&hour<24&&mintue>=0&&mintue<0&&second>=0&&second<60){cout<=60){}t.mintue=t1.mintue+t2.mintue;if(t.mintue>=60){}t.hour=t1.hour+t2.hour;t.hour=t.hour%24;returnt;t.mintue-=60;t.hour++;t.second-=60;cout<#includeclasstriangle{public:triangle(inta1,intb1,intc1){a=a1;b=b1;c=c1;timet1(12,12,12),t2(12,12,12);timet(0,0,0);t1.get();t2.get();t=t1-t2;cout<<"两时间的差:";t.disp();t=t1+t2;cout<<"两时间的和:";t.disp();p=(a+b+c)/2;sp=sqrt(p*(p-a)*(p-b)*(p-c));}...