#include <iostream> using namespace std; #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+(double x,Complex &c2); friend Complex operator+(Complex &c1,double x); friend Complex operator-(Complex &c1,Complex &c2); friend Complex operator-(double x,Complex &c2); friend Complex operator-(Complex &c1,double x); friend Complex operator*(Complex &c1,Complex &c2); friend Complex operator*(double x,Complex &c2); friend Complex operator*(Complex &c1,double x); friend Complex operator/(Complex &c1,Complex &c2); friend Complex operator/(double x,Complex &c2); friend Complex operator/(Complex &c1,double x); 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+(double x,Complex &c2) { return Complex(x+c2.real,c2.imag); } Complex operator+(Complex &c1,double x) { 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-(double x,Complex &c2) { return Complex(x-c2.real,0-c2.imag); } Complex operator-(Complex &c1,double x) { return Complex(c1.real-x,c1.imag); } 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*(double x,Complex &c2) { return Complex(x*c2.real,x*c2.imag); } Complex operator*(Complex &c1,double x) { return Complex(c1.real*x,c1.imag*x); } Complex 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/(double x, Complex &c2) { Complex c(x,0); return c/c2; } Complex operator/(Complex &c1, double x) { Complex c(x,0); return c1/c; } void Complex::display () { cout<<"("<<real<<","<<imag<<")"<<endl; } //下面定义用于测试的main()函数 int main() { Complex c1(3,4),c2(5,-10),c3; double x=11; cout<<"c1="; c1.display(); cout<<"c2="; c2.display(); cout<<"x="<<x<<endl; c3=c1+c2; cout<<"c1+c2="; c3.display(); cout<<"c1+x="; (c1+x).display(); cout<<"x+c1="; (x+c1).display(); c3=c1-c2; cout<<"c1-c2="; c3.display(); cout<<"c1-x="; (c1-x).display(); cout<<"x-c1="; (x-c1).display(); c3=c1*c2; cout<<"c1*c2="; c3.display(); cout<<"c1*x="; (c1*x).display(); cout<<"x*c1="; (x*c1).display(); c3=c1/c2; cout<<"c1/c2="; c3.display(); cout<<"c1/x="; (c1/x).display(); cout<<"x/c1="; (x/c1).display(); return 0; }
第八周————运算符重载(三),布布扣,bubuko.com
原文:http://blog.csdn.net/u012313437/article/details/23755447