#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);//声明operator+为Complex友元函数 friend Complex operator+ (const double &d, Complex &c); friend Complex operator+ (Complex &c, const double &d); friend Complex operator- (Complex &c1, Complex &c2); friend Complex operator- (const double &d, Complex &c); friend Complex operator- (Complex &c, const double &d); friend Complex operator- (Complex &c); friend Complex operator* (Complex &c1, Complex &c2); friend Complex operator* (const double &d, Complex &c); friend Complex operator* (Complex &c, const double &d); friend Complex operator/ (Complex &c1, Complex &c2); friend Complex operator/ (const double &d, Complex &c); friend Complex operator/ (Complex &c, const double &d); void display(); private: double real; double imag; }; //下面定义成员函数 void Complex :: display( ) { cout<<"("<<real<<","<<imag<<"i)"<<endl; } Complex operator + (Complex &c1, Complex &c2) {return Complex(c1.real + c2.real, c1.imag + c2.imag);} class Complex; Complex operator + (const double &d, Complex &c) { return Complex(d + c.real, c.imag);} Complex operator + (Complex &c, const double &d) { return Complex(c.real + d, c.imag);} Complex operator - (Complex &c1, Complex &c2) {return Complex(c1.real - c2.real, c1.imag - c2.imag);} class Complex; Complex operator - (const double &d, Complex &c) { return Complex(d - c.real, -c.imag);} Complex operator - (Complex &c, const double &d) { return Complex(c.real - d, c.imag);} Complex operator - (Complex &c) { return Complex(-c.real, -c.imag);} Complex operator * (Complex &c1, Complex &c2) {return Complex(c1.real * c2.real - c1.imag * c2.imag, c1.imag * c2.real + c1.real * c2.imag);} Complex operator * (const double &d, Complex &c) { return Complex(d * c.real, d * c.imag);} Complex operator * (Complex &c, const double &d) { return Complex(c.real * d, c.imag * d);} Complex operator / (Complex &c1, Complex &c2) {return Complex((c1.real * c2.real + c1.imag * c2.imag) / (c2.real * c2.real + c2.imag * c2.imag), (c1.imag * c2.real - c1.real * c2.imag) / (c2.real * c2.real + c2.imag * c2.imag));} Complex operator / (Complex &c, const double &d) { return Complex(d / c.real, d / c.imag);} Complex operator / (const double &d, Complex &c) { return Complex((d * c.real) / (c.real * c.real + c.imag * c.imag), ( - d * c.imag) / (c.real * c.real + c.imag * c.imag));} int main() { const double d = 2; Complex c1(3,4),c2(5,-10),c3,c4; cout << "c1="; c1.display(); cout << "c2="; c2.display(); c3 = c1 + c2; cout << "c1+c2="; c3.display(); c3 = c1 + 2; cout << "c1+2="; c3.display(); c3 = 2 + c1; cout << "2+c1="; c3.display(); c3 = c1 - c2; cout << "c1-c2="; c3.display(); c3 = c1 - 2; cout << "c1-2="; c3.display(); c3 = 2 - c1; cout << "2-c1="; c3.display(); c3 = c1 * c2; cout << "c1*c2="; c3.display(); c3 = c1 * 2; cout << "c1*2="; c3.display(); c3 = 2 * c1; cout << "2*c1="; c3.display(); c3 = c1 / c2; cout << "c1/c2="; c3.display(); c3 = c1 / 2; cout << "c1/2="; c3.display(); c3 = 2 / c1; cout << "2/c1="; c3.display(); c3 = - c1; cout << "-c1="; c3.display(); system("pause"); return 0; }