class x
{
public:
int y;
x& operator++(int);
};
我想,把foo(),工作方式類似於:以前執行什麼,返回還是++?
int& foo()
{
int& ret_val = x.y;
x++;
return ret_val;
}
,但看起來像:
int& foo()
{
return (x++).y;
}
這可能嗎?什麼是更早執行,返回或++?
好的,thx爲您的答案。
「而對象的狀態增量之前的副本(i.e.-你的X &操作++(INT)犯規遵循慣例)」 我可以寫操作++(INT)按照慣例?以及如何編寫?
然後,我可以寫函數是這樣的:
int foo() {return (x++).y;}
除非我誤解了這個問題,否則返回的權利將首先評估。因此,++會在返回任何內容之前「執行」。 – Pete 2011-05-11 20:27:11
如果遵循標準的C++約定,後增量運算符(x ++)不應返回要遞增的對象,而應返回先前狀態中對象的副本到增量(即 - 你的x&operator ++(int)不遵循約定)。前綴增量運算符(++ x)返回增加的原始對象。 – MarkD 2011-05-11 20:30:21