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