实验四运算符重载

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

成都学院

实验报告

课程名称C++面向对象程序设计实验名称实验4 运算符重载姓名

班级

学号

指导教师

设计时间2016年5月16日

1.实验目的

1) 进一步了解运算符的概念和使用方法。

2) 掌握几种常用的运算符重载的方法。

3) 了解转换构造函数的使用方法。

4) 了解在Visual C++6.0 环境下进行运算符重载要注意的问题。

1.实验内容

1) 声明一个复数Complex,重载运算符“+”,“-”,“/”,“*”,使之能用于复数的加减乘除

运算,运算符重载函数作为Complex类的成员函数。编写程序,分别求两个复数之和、差、积和商。思考:编写的程序能否用于一个整数与一个复数的算术运算。

#include

using namespace std;

class Complex

{

public:

Complex(){real=0;imag=0;}

Complex(double r,double i){real=r;imag=i;}

Complex operator +(Complex &c2);

Complex operator -(Complex &c2);

Complex operator *(Complex &c2);

Complex operator /(Complex &c2);

void display();

private:

double real;

double imag;

};

Complex Complex::operator+(Complex &c2)

{

Complex c;

c.real=real+c2.real;

c.imag=imag+c2.imag;

return c;

}

Complex Complex::operator-(Complex &c2)

{

Complex c;

c.real=real-c2.real;

c.imag=imag-c2.imag;

return c;

}

Complex Complex::operator*(Complex &c2)

{

Complex c;

c.real=real*c2.real-imag*c2.imag;

c.imag=imag*c2.real+real*c2.imag;

return c;

}

Complex Complex::operator/(Complex &c2)

{

Complex c;

c.real = (real*c2.real + imag*c2.imag)/(c2.real*c2.real + c2.imag*c2.imag);

c.imag = (imag*c2.real - real*c2.imag)/(c2.real*c2.real + c2.imag*c2.imag);

return c;

}

void Complex::display()

{

if(imag<0)

cout<<"("<

else

cout<<"("<

}

int main()

{

Complex c1(3,4), c2(5,-10), c3;

c3=c1+c2;

c3.display();

c3=c1-c2;

c3.display();

c3=c1*c2;

c3.display();

c3=c1/c2;

c3.display();

return 0;

该程序不能用于用于一个整数与一个复数的算术运算。

显示:错误error C2679: 二进制“+”: 没有找到接受“int”类型的右操作数的运算符(或没有可接受的转换) 2) 声明一个复数Complex,重载运算符“+”,使之能用于复数的加法运算。参加运算的两

个运算量可以都是类对象,也可以有一个整数,顺序任意。列如:c1+c2,i+c1,c1+i均合法。

#include

using namespace std;

class Complex

{

public:

Complex(double r = 0, double i = 0) :real(r), imag(i)

{

};

friend Complex operator +(Complex &c1, Complex &c2);

friend Complex operator +(Complex &c, double i);

friend Complex operator +(double i, Complex &c);

friend ostream& operator << (ostream&, Complex&);

friend istream& operator >> (istream&, Complex&);

private:

double real;

double imag;

};

Complex operator +(Complex &c1, Complex &c2)

{

return Complex(c1.real + c2.real, c1.imag + c2.imag);

}

Complex operator +(Complex &c, double i)

{

return Complex(i + c.real, c.imag);

}

Complex operator +(double i, Complex &c)

{

return Complex(i + c.real, c.imag);

相关文档
最新文档