我正在閱讀一些書,我決定編寫我自己的用戶定義類型的後增量運算符的實現。這是代碼。用戶定義類型的行爲的後增量運算符
#include <iostream>
using namespace std;
class X
{
int a;
public:
X(int x=1):a(x){}
X operator++(int)
{
X oldobj = *this;
(*this).a++;
return oldobj;
}
int get(){return a;}
};
int main()
{
X obj,obj2;
obj++ = obj2;
cout<< obj.get() << endl;
return 0;
}
我希望輸出爲1
,因爲增量完成後OBJ 2的值將被複制。但輸出是2
。
想法?
P.S.我知道這段代碼不會贏得任何獎牌和謬論。這僅僅是爲了我的理解。順便提一句,++obj = obj2
返回1
;
行爲未定義?
'(*此)。A ++'更通常寫作爲'this-> a ++'(或者只是'a ++') – sehe