#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,Complex &c2); friend Complex operator*(Complex &c1,Complex &c2); friend Complex operator/(Complex &c1,Complex &c2); friend Complex operator+(Complex &c1,double d); friend Complex operator+(double d,Complex &c1); friend Complex operator-(Complex &c1,double d); friend Complex operator-(double d,Complex &c1); friend Complex operator*(Complex &c1,double d); friend Complex operator*(double d,Complex &c1); friend Complex operator/(Complex &c1,double d); friend Complex operator/(double d,Complex &c1); Complex operator-(); void display(); 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 &c1,Complex &c2) { return Complex(c1.real-c2.real,c1.imag-c2.imag); } Complex operator*(Complex &c1,Complex &c2) { Complex c; c.real=c1.real*c2.real-c1.imag*c2.imag; c.imag=c1.real*c2.imag-c1.imag*c2.real; return c; } Complex operator/(Complex &c1,Complex &c2) { Complex c; c.real=(c1.real*c2.real+c1.imag*c2.imag)/(c2.imag*c2.imag+c2.real*c2.real); c.imag=(c1.imag*c2.real-c1.real*c2.imag)/(c2.imag*c2.imag+c2.real*c2.real); return c; } Complex operator+(Complex &c1,double d) { return Complex(c1.real+d,c1.imag); } Complex operator+(double d,Complex &c1) { return Complex(c1.real+d,c1.imag); } Complex operator-(Complex &c1,double d) { return Complex(c1.real-d,c1.imag); } Complex operator-(double d,Complex &c1) { return Complex(c1.real-d,c1.imag); } Complex operator*(Complex &c1,double d) { return Complex(c1.real*d,c1.imag*d); } Complex operator*(double d,Complex &c1) { return Complex(c1.real*d,c1.imag*d); } Complex operator/(Complex &c1,double d) { return Complex(c1.real/d,c1.imag/d); } Complex operator/(double d,Complex &c1) { return Complex(c1.real/d,c1.imag/d); } Complex Complex:: operator-() { return Complex(-real,-imag); } void Complex::display() { cout<<"("<<real<<","<<imag<<"i)"<<endl; } ostream & operator <<(ostream & output,Complex &c) { output<<"("<<c.real; if(c.imag>=0)output<<"+"; output<<c.imag<<"i)"<<endl; return output; } istream & operator >>(istream & input,Complex &c) { cout<<"请输入虚数"<<endl; input>>c.real>>c.imag; return input; } int main() { Complex c1,c2,c3; double d=3; cin>>c1; cout<<"c1="<<c1<<endl; cin>>c2; cout<<"c2="<<c2<<endl; c3=c1+c2; cout<<"c1+c2="<<c3<<endl; c3=c1-c2; cout<<"c1-c2="<<c3<<endl; c3=c1*c2; cout<<"c1*c2="<<c3<<endl; c3=c1/c2; cout<<"c1/c2="<<c3<<endl; c3=c1+d; cout<<"c1+d="<<c3<<endl; c3=d+c1; cout<<"d+c1="<<c3<<endl; c3=c1-d; cout<<"c1-d="<<c3<<endl; c3=d-c1; cout<<"d-c1="<<c3<<endl; c3=c1*d; cout<<"c1*d="<<c3<<endl; c3=d*c1; cout<<"d*c1="<<c3<<endl; c3=c1/d; cout<<"c1/d="<<c3<<endl; c3=d/c1; cout<<"d/c1="<<c3<<endl; c3=-c1; cout<<"-c1="<<c3<<endl; c3=-c2; cout<<"-c2="<<c3<<endl; system("pause"); return 0; }