Complex代码如下:
#include <iostream>
using namespace std;
class Complex
{
public:
// 1.完成四个默认成员函数
Complex(double real = 0.0, double image = 0.0) //初始化
{
cout << "Complex(double real=0.0,double image=0.0)" << endl;
_real = real;
_image = image;
}
Complex(const Complex& c) //构造函数
{
cout << "Complex(const Complex& c)" << endl;
_real = c._real;
_image = c._image;
}
~Complex() //析构函数
{
cout << "~Complex" << endl;
}
Complex& operator=(const Complex& c) ///赋值运算符重载
{
cout << "Complex& operator=(const Complex& c)" << endl;
if (this != &c)
{
_real = c._real;
_image = c._image;
}
return *this;
}
// 2.比较运算符
//operator>
bool operator>(const Complex& c)
{
while (_image == 0)
{
if (_real > c._real)
return true;
else
return false;
}
}
//operator==
bool operator==(const Complex& c)
{
return _real == c._real&&_image == c._image;
}
//operator>=
bool operator>=(const Complex& c)
{
return *this > c || *this == c;
}
//operator<
bool operator<(const Complex& c)
{
return !(*this >= c);
}
//operator<=
bool operator<=(const Complex& c)
{
return !(*this>c);
}
//operator!=
bool operator!=(const Complex& c)
{
return !(*this == c);
}
// 3.前置后置++和+/+=的实现
Complex& operator++() //前置++
{
this->_real += 1;
return *this;
}
Complex operator++(int) //后置++
{
Complex tmp(*this);
_real += 1;
return tmp;
}
//operator+
Complex operator+(double real)
{
Complex tmp(*this);
tmp._real += real;
return tmp;
}
//operator+=
Complex operator+=(double real)
{
*this = *this + real;
return *this;
}
void Display()
{
cout << _real << "-" << _image << endl;
}
protected:
double _real;
double _image;
};