一、问题
之前敲运算符重载没有遇到什么问题,今天唯独今天敲++重载的时候,出现了以下错误:
无参有参的构造函数均写了,这样写也可以通过:
二、解决方法
我发现,++运算符之所以会报错,是因为他和前面的运算符,如+,-,有一个质的区别:
根据参数的顺序,运算结果会有所差别。
比如,当你只写一个++a的函数时,
那么系统无法识别你到底是++a还是a++。
于是,我把两个分别写完了:
Person& operator++()
{
this->age++;
return *this;
}
Person& operator++(int)
{
Person temp = *this;
this->age++;
return temp;
}
再运算,就没有任何问题了。
然而,注释掉上述两段代码中的任意一个,程序都会报错。
三、总结
遇到和顺序有关的运算符,如果需要重载,一定要把每一个类别写清楚。