// Complex 类的基本函数
#include<iostream>
using namespace std;
class Complex
{
public :
Complex(double real=1.0,double p_w_picpath=2.0)//构造函数 (有参) 调用2次拷贝构造
{
_real=real;
_p_w_picpath=p_w_picpath;
}
Complex() //构造函数 (无参)
{
_real=1.0;
_p_w_picpath=2.0;
}
亦可写成:
Complex(double real=1.0,double p_w_picpath=2.0)//构造函数 初始化列表进行初始化
:_real(real) // 调用1次拷贝构造
,_p_w_picpath(p_w_picpath)
{}
Complex(const Complex& c)//拷贝构造函数 参数必须引用传参
{
_real=c._real;
_p_w_picpath=c._p_w_picpath;
}
~Complex()//析构函数 无参数返回值 清理
{
cout<<"~Complex()"<<endl;
}
Complex& opertator=(const Complex& c) //赋值运算符的重载 =
{
// 方法一: // 非 const 仅 ----> const
if(this != &c)
{
_real=c._real;
_p_w_picpath=c._p_w_picpath;
}
return *this;
// 方法二:
// if(this != &c)
// {
// swap(_real,c._real);
// swap(_p_w_picpath,c._p_w_picpath);
// }
// return *this;
}
Complex& opertator+(const Complex& c) // +
{
Complex tmp;
tmp._real=_real+c._real;
tmp._p_w_picpath=_p_w_picpath+c._p_w_picpath;
return tmp;
}
Complex& opertator-(const Complex& c) // -
{
Complex tmp;
tmp._real=_real-c._real;
tmp._p_w_picpath=_p_w_picpath-c._p_w_picpath;
return tmp;
}
Complex operator*(Complex& c) // *
{
Complex tmp;
tmp._real=_real*c._real;
tmp._p_w_picpath=_p_w_picpath*c._p_w_picpath;
return tmp;
}
Complex operator/(Complex& c) // /
{
Complex tmp;
tmp._real=_real/c._real;
tmp._p_w_picpath=_p_w_picpath/c._p_w_picpath;
return tmp;
}
Complex& opertator++(int) // 后置++
{
Complex tmp(*this);
_real++;
_p_w_picpath++;
return tmp; //不能返回引用
}
Complex& opertator++() // 前置++
{
_real=_real+1;
_p_w_picpath=_p_w_picpath+1;
return *this;
}
Complex operator --(int) // 后置 --
{
Complex tmp(*this);
_real--;
_p_w_picpath--;
return tmp;
}
Complex& operator --() // 前置 --
{
_real=_real-1;
_p_w_picpath=_p_w_picpath-1;
return *this;
}
public:
bool operator>(const Complex& c)
{
return _real>c._real;
return _p_w_picpath>c._p_w_picpath;
}
Complex* opertator&()
{
return *this;
}
protected :
double _real ;
double _p_w_picpath;
};
void Test1()
{
Complex c1(3.0,6.0);
c1.Display1();
c1.Display2();
Complex c2(c1);
c2.Display1();
c2.Display2();
Complex ret1=c1+c2;
ret1.Display1();
Complex ret2=c1-c2;
ret2.Display1();
Complex ret3=c1*c2;
ret3.Display1();
Complex ret4=c1/c2;
ret4.Display1();
(c1++).Display1();
(++c1).Display1();
(c1--).Display1();
(--c1).Display1();
(c1+=c2).Display1();
(c1-=c2).Display1();
}
int main()
{
Test1();
return 0;
}
转载于:https://blog.51cto.com/zxtong/1752745