#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 x); friend Complex operator+(double x,Complex &c1); friend Complex operator-(Complex &c1,Complex &c2); friend Complex operator-(Complex &c1,double x); friend Complex operator-(double x,Complex &c1); friend Complex operator*(Complex &c1,Complex &c2); friend Complex operator*(Complex &c1,double x); friend Complex operator*(double x,Complex &c1); friend Complex operator/(Complex &c1,Complex &c2); friend Complex operator/(Complex &c1,double x); friend Complex operator/(double x,Complex &c1); void display(); 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,double x) //实数在后 { return Complex (c1.real + x ,c1.imag); } Complex operator+(double x,Complex &c1) //实数在前 { return Complex (c1.real + x ,c1.imag); } Complex operator-(Complex &c1,Complex &c2) { return Complex (c1.real - c2.real,c1.imag - c2.imag); } Complex operator-(Complex &c1,double x) //实数在后 { return Complex (c1.real - x,c1.imag); } Complex operator-(double x,Complex &c1) //实数在前 { return Complex (x - c1.real,c1.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,double x) //实数在后 { Complex c; c.real = x * c1.real; c.imag = x * c1.imag; return c; } Complex operator*(double x,Complex &c1) //实数在前 { Complex c; c.real = x * c1.real; c.imag = x * c1.imag; 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 x) //实数在后 { Complex c; c.real = c1.real / x; c.imag = c1.imag / x; return c; } Complex operator/(double x,Complex &c1) //实数在前 { Complex c; c.real = c1.real / x; c.imag = c1.imag / x; return c; } void Complex::display() { cout << "(" << real << "," << imag << "i)" << endl; } int main() { double x = 4; Complex c1(3,4),c2(5,-10),c3; cout<<"c1 = "; c1.display(); cout<<"c2 = "; c2.display(); c3=c1+c2; cout<<"c1+c2 = "; c3.display(); c3=c1-c2; cout<<"c1-c2 = "; c3.display(); c3=c1*c2; cout<<"c1*c2 = "; c3.display(); c3=c1/c2; cout<<"c1/c2 = "; c3.display(); cout << endl; c3=x+c1; cout << "4+c1 = "; c3.display(); c3=x+c1; cout << "c1+4 = "; c3.display(); c3=x-c1; cout << "4-c1 = "; c3.display(); c3=c1-x; cout << "c1-4 = "; c3.display(); c3=x*c1; cout << "4*c1 = "; c3.display(); c3=x*c1; cout << "c1*4 = "; c3.display(); c3=x/c1; cout << "4/c1 = "; c3.display(); c3=x/c1; cout << "c1/4 = "; c3.display(); system("pause"); return 0; }