++,--
単項postfix/prefix演算子を完全にオーバーロードして成功し、コードは正常に機能しますが、(++obj)++
ステートメントを使用すると予期しない結果が返されます
ここにコードがあります
class ABC
{
public:
ABC(int k)
{
i = k;
}
ABC operator++(int )
{
return ABC(i++);
}
ABC operator++()
{
return ABC(++i);
}
int getInt()
{
return i;
}
private:
int i;
};
int main()
{
ABC obj(5);
cout<< obj.getInt() <<endl; //this will print 5
obj++;
cout<< obj.getInt() <<endl; //this will print 6 - success
++obj;
cout<< obj.getInt() <<endl; //this will print 7 - success
cout<< (++obj)++.getInt() <<endl; //this will print 8 - success
cout<< obj.getInt() <<endl; //this will print 8 - fail (should print 9)
return 1;
}
解決策や理由がありますか?