专业课程实验报告课程名称:面向对象程序设计(C++)开课学期:2015至2016学年第1学期专业:计算机科学与技术年级班级:13计科学生姓名:侯瑄学号:222013321210092实验教师:陈睿计算机与信息科学学院软件学院实验项目名称C++程序设计运算符重载实验时间2015.10.25实验类型□验证性□设计性□综合性一、实验目的和要求(1)掌握通过运算符重载实现多态性的方法;(2)学会运算符重载的成员函数法和友元函数法;(3)能区分单目运算符的前置与后置。二、实验内容与设计(主要内容,操作步骤、算法描述或程序代码)本次实验主要实现以下内容:【项目内容】定义一个复数类Complex,重载运算符“+”,“-”,“*”,“/”“++”“--”“”“”,使之能用于复数的加、减、乘、除、自增、自减、比较大小。运算符重载函数作为Complex类的成员函数。编程序,分别求两个复数之和、差、积、商、自增、自减、比较大小。提示:注意复数的乘、除法计算。Ps:同时注意复数的显示。程序设计如下:(基于vs2010运行)//redown.cpp:定义控制台应用程序的入口点。#includestdafx.h#includeiostreamusingnamespacestd;classComplex{private:doubler,i;public:Complex(doubleR=0,doubleI=0):r(R),i(I){};Complexoperator+(Complexb);//L1复数加法Complexoperator-(Complexb);//L2复数减法friendComplexoperator*(Complexa,Complexb);//L3复数乘法friendComplexoperator/(Complexa,Complexb);//L4复数除法friendComplexoperator--(Complexa);//L5复数自减friendComplexoperator++(Complexa);//L6复数自增friendbooloperator(Complexa,Complexb);//L7复数的比较friendbooloperator(Complexa,Complexb);voiddisplay();};//重载+and—ComplexComplex::operator+(Complexb){returnComplex(r+b.r,i+b.i);}ComplexComplex::operator-(Complexb){returnComplex(r-b.r,i-b.i);}//重载*Complexoperator*(Complexa,Complexb){Complext;t.r=a.r*b.r-a.i*b.i;t.i=b.r*b.i+b.i*b.r;returnt;}//重载/Complexoperator/(Complexa,Complexb){Complext;doublex;x=1/(b.r*b.r+b.i*b.i);t.r=x*(a.r*b.r+a.i*b.i);t.i=x*(a.i*b.r-a.r*b.i);returnt;}//重载——Complexoperator--(Complexa){Complext;Complexy(1,1);t=a-y;returnt;}//重载++Complexoperator++(Complexa){Complext;Complexy(1,1);t=a+y;returnt;}//重载booloperator(Complexa,Complexb){Complext;t=a-b;if((t.r0)&&(t.i0))return1;elsereturn0;}//重载booloperator(Complexa,Complexb){Complext;t=a-b;if((t.r0)&&(t.i0))return1;elsereturn0;}//定义复数的显示voidComplex::display(){coutr;if(i0)cout+;if(i!=0)coutiiendl;}voidmain(void){Complexc1(1,2),c2(3,4),c3,c4,c5,c6,c7,c8;c3=c1+c2;c4=c1-c2;c5=c1*c2;c6=c1/c2;c7=c2++;c8=c2--;coutc1的数值为;c1.display();coutc2的数值为;c2.display();coutc3=c1+c2,所以c3的数值为;c3.display();coutc4=c1-c2,所以c4的数值为;c4.display();coutc5=c1*c2,所以c5的数值为;c5.display();coutc6=c1/c2,所以c6的数值为;c6.display();coutc7=c2++,所以c7的数值为;c7.display();coutc8=c2--,所以c8的数值为;c8.display();cout比较c8c7?;cout(c8c7?ture:false);cout\n;cout比较c8c7?;cout(c8c7?ture:false);system(pause);}三、测试数据和执行结果(在给定数据下,执行操作、算法和程序的结果,可使用数据、图表、截图等给出)程序运行如图:四、实验结果分析及总结(对实验的结果是否达到预期进行分析,总结实验的收获和存在的问题等)通过此次实验我对于运算符的重载有了一定的了解认识和掌握,对于友元,二元,一元,特殊等运算符也有了清楚的认知,同时明白了这些运算符应该如何重载以及不能重载的运算符有..*::?:#等几个。同时进一步的掌握了类的定义,对复数新建了Complex类,同时对新建的类进行了复数的加减比较大小等运算。对C++语言有了进一步的掌握。教师评阅实验内容和设计(A-E):操作过程、算法或代码(A-E):实验结果(A-E):实验分析和总结(A-E):实验成绩(A-E):反馈评语: