<span style="font-family: Arial, Helvetica, sans-serif;">#include <iostream></span>
using namespace std; class complex { public: // 带缺省值的构造函数 complex (double real = 0, double image = 0) :_real(real) ,_image(image) { cout<<"complex (double real = 0, double image = 0)"<<endl; } // 析构函数 ~complex() { cout<<"~complex()"<<endl; } // 拷贝构造函数 complex (const complex& d) :_image(d._image) ,_real(d._real) { cout<<"complex (const complex& d)"<<endl; } // 赋值运算符重载 complex& operator= (const complex& d) { cout<<"operator= (const complex& d)"<<endl; if (this != &d) { this->_real = d._real; this->_image = d._image; } return *this; } // 取地址运算符重载 complex* operator& () { cout<<"operator&()"<<endl; return this; } // const修饰的取地址运算符重载 const complex* operator& () const { cout<<"operator&() const"<<endl; return this; } void display() { cout<<"real:"<<_real<<"--image:"<<_image<<endl<<endl; } // 请实现下面的运算符重载! complex& operator++() //前置++ //返回当前对象本身 { cout<<"operator++()"<<endl; _real++; _image++; return *this; //可以立即体现出前置++的值 } complex operator++(int)//后置++ { cout<<"operator++(int)"<<endl; complex c = *this; this->_real++; this->_image++; return c; } complex& operator--() { cout<<"operator--()"<<endl; _real--; _image--; return *this; } complex operator--(int) //后置-- { cout<<"operator--()"<<endl; complex c = *this; this->_real--; this->_image--; return c; } complex operator+(const complex& c) { cout<<"operator+(const complex& c)"<<endl; return complex(_real+c._real,_image+c._image); } complex operator-(const complex& c) { cout<<"operator-(const complex& c)"<<endl; return complex(_real-c._real,_image-c._image); } complex& operator-=(const complex& c) { cout<<"operator-=(const complex& c)"<<endl; _real -= c._real; _image -= c._image; return *this; } complex& operator+=(const complex& c) { cout<<"operator+=(const complex& c)"<<endl; _real += c._real; _image += c._image; return *this; } complex operator*(const complex& c) { cout<<"operator*(const complex& c)"<<endl; return complex(_real*c._real-_image*c._image,c._image*_real+_image*c._real); } complex operator/(const complex& c) { cout<<"operator/(const complex& c)"<<endl; return complex((_real/c._real+_image*c._image)/(c,_real*c._real+c._image*c._image),(_image*c._real-_real*c._image)/(c,_real*c._real+c._image*c._image)); } private: double _real; double _image; };
原文地址:http://blog.csdn.net/zhongqi0808/article/details/45393199