复数的概念我们高中已经接触过,包含是实部和虚部,
For example:2i + 3J;实部和虚部值可为整型,亦可浮点型,那在此实现一下简单的复数类的操作
代码如下:
class Complex{public: Complex(double real,double imag) { _real = real; _imag = imag; } Complex(const Complex& c) { _real = c._real; _imag = c._imag; } ~Complex() { } Complex& operator=(const Complex& c) { if(&c != this) { this->_real = c._real; this->_imag = c._imag; } return *this; } Complex operator+(const Complex& c) { Complex ret(*this);// + 运算返回运算后的值 ret._real += c._real; ret._imag += c._imag; return ret; } Complex& operator++() // 前置++ , 当外面需要此返回值时,需要加& { this->_real += 1; this->_imag += 1; return *this; } Complex operator++(int) // 后置++ ,当外面不需要此返回值时,无需加& { Complex tmp(*this);//后置++返回原来的值,故定义一个临时变量保存起来 this->_real += 1; this->_imag += 1; return tmp; } Complex& operator+= (const Complex& c) { this->_real = this->_real + c._real; this->_imag = this->_imag + c._imag; return *this; } inline bool operator==(const Complex& c) { return (_real == c._real && _imag == c._imag); } inline bool operator>(const Complex& c) { return (_real > c._real && _imag > c._imag); } inline bool operator>=(const Complex& c) { //return (_real >= c._real // && _imag >= c._imag); return (*this > c) || (*this == c);//直接使用上面实现重载符 > 和 == } inline bool operator<=(const Complex& c) { //return (_real <= c._real // && _imag <= c._imag); return !(*this > c);//直接使用上面实现重载符 > } bool operator<(const Complex& c) { return !(*this > c) || (*this == c);//直接使用上面实现重载符 >= } inline void Display() { cout<<_real<<"-"<<_imag<
测试单元:(偷懒就在main函数里测试,可以单独封装一个函数进行测试)
int main(){ Complex c(1,2); Complex c1(c); //c1.Display(); //Complex ret = ++c1; //Complex ret = c1++; //ret.Display(); Complex ret(c1); ret.Display(); return 0;}