C++研发 【++运算符重载问题】

  • Post author:
  • Post category:其他


一、问题

之前敲运算符重载没有遇到什么问题,今天唯独今天敲++重载的时候,出现了以下错误:

无参有参的构造函数均写了,这样写也可以通过:

二、解决方法

我发现,++运算符之所以会报错,是因为他和前面的运算符,如+,-,有一个质的区别:

根据参数的顺序,运算结果会有所差别。

比如,当你只写一个++a的函数时,

那么系统无法识别你到底是++a还是a++。

于是,我把两个分别写完了:

	Person& operator++()
	{
		this->age++;
		return *this;
	}

	Person& operator++(int)
	{
		Person temp = *this;
		this->age++;
		return temp;
	}

再运算,就没有任何问题了。

然而,注释掉上述两段代码中的任意一个,程序都会报错。

三、总结


遇到和顺序有关的运算符,如果需要重载,一定要把每一个类别写清楚。