定义完整的类,实现复数中的运算符重载

问题及代码:

/* *All rights reserved. *文件名称:test.cpp *作 者:尚 月 *完成日期:2015年 04 月 29 日 *版本号:V1.0 * *问题描述:定义一个定义完整的类,这样的类在(2)的基础上,扩展+-*的运算符的功能,,使之能与double型数据进行运算。 *输入描述:无 *程序输出:按要求输出 */#include<iostream>using namespace std;class Complex{public:Complex(){real=0,imag=0;}Complex(double r,double i){real=r,imag=i;}friend Complex operator+( Complex &c1,Complex &c2);friend Complex operator+(Complex &c1,double d2);friend Complex operator+(double d1,Complex d2);friend Complex operator-(Complex &c1, Complex &c2);friend Complex operator-(Complex &c1,double d2);friend Complex operator-(double d1,Complex &c2);friend Complex operator*( Complex &c1,Complex &c2);friend Complex operator*(Complex &c1,double d2);friend Complex operator*(double d1,Complex &c2);friend Complex operator/( Complex &c1,Complex &c2);friend Complex operator/(Complex &c1,double d2);friend Complex operator/(double d1,Complex &c2);void display();private:double real;double imag;};//复数相加: (a+bi)+(c+di)=(a+c)+(b+d)i.Complex operator+(Complex &c1, Complex &c2){Complex c;c.real=c1.real+c2.real;c.imag=c1.imag+c2.imag;return c;}Complex operator+(Complex &c1,double d2){Complex c(d2,0);return c+c1;}Complex operator+(double d1,Complex &c2){Complex c(d1,0);return c+c2;}//复数相减:(a+bi)-(c+di)=(a-c)+(b-d)i.Complex operator-( Complex &c1,Complex &c2){Complex c;c.real=c1.real-c2.real;c.imag=c1.imag-c2.imag;return c;}Complex operator-(Complex &c1,double d2){Complex c(d2,0);return c-c1;}Complex operator-(double d1,Complex &c2){Complex c(d1,0);return c-c2;}//复数相乘:(a+bi)(c+di)=(ac-bd)+(bc+ad)i.Complex operator*(Complex &c1, Complex &c2){Complex c;c.real=c1.real*c2.real-c1.imag*c2.imag;c.imag=c1.imag*c2.real+c1.real*c2.imag;return c;}Complex operator*(Complex &c1,double d2){Complex c(d2,0);return c*c1;}Complex operator*(double d1,Complex &c2){Complex c(d1,0);return c*c2;}//复数相除:(a+bi)/(c+di)=(ac+bd)/(c^2+d^2) +(bc-ad)/(c^2+d^2)iComplex operator/( Complex &c1,Complex &c2){Complex c;c.real=(c1.real*c2.real+c1.imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);c.imag=(c1.imag*c2.real-c1.real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);return c;}Complex operator/(Complex &c1,double d2){Complex c(d2,0);return c/c1;}Complex operator/(double d1,Complex &c2){Complex c(d1,0);return c/c2;}void Complex::display(){cout<<"( "<<real<<","<<imag<<"i )"<<endl;}//下面定义用于测试的main()函数int main(){Complex c1(3,4),c2(5,-10),c3;double d=11;cout<<"c1=";c1.display();cout<<"c2=";c2.display();cout<<"d="<<d<<endl<<endl;cout<<"下面是重载运算符的计算结果:"<<endl;c3=c1+c2;cout<<"c1+c2=";c3.display();cout<<"c1+d=";(c1+d).display();cout<<"d+c1=";(c1+d).display();c3=c1-c2;cout<<"c1-c2=";c3.display();cout<<"c1-d=";(c1-d).display();cout<<"d-c1=";(d-c1).display();c3=c1*c2;cout<<"c1*c2=";c3.display();cout<<"c1*d=";(c1*d).display();cout<<"d*c1=";(d*c1).display();c3=c1/c2;cout<<"c1/c2=";c3.display();cout<<"c1/d=";(c1/d).display();cout<<"d/c1=";(d/c1).display();return 0;}

运行结果:

学习总结:虽然有点长,但还可以的。。

乐观者在灾祸中看到机会;悲观者在机会中看到灾祸

定义完整的类,实现复数中的运算符重载

相关文章:

你感兴趣的文章:

标签云: