[英]operation overloading operator++()
class Point{
private:
int xpos, ypos;
public:
Point(int x=0, int y=0) : xpos(x), ypos(y) { }
void showPosition() const {
cout<<"["<<xpos<<", "<<ypos<<"]"<<endl;
}
Point& operator++(){ //Point operator++()
xpos+=1;
ypos+=1;
return *this;
}
};
對於operator ++(),我知道Point&是正確的返回類型,但是我不明白為什么Point返回類型也不起作用。
Point operator++(){
xpos+=1;
ypos+=1;
return *this;
}
當我用它來執行
Point pos(1,3);
++(++pos);
我懂了
[2,4]
不
[3,5] //which is what I should be getting.
我認為沒有引用的operator ++()仍應提供相同的結果,因為它將隱式調用其副本構造函數,因此盡管速度較慢,但我認為它應提供相同的結果。
當++
返回副本時,則++(++pos)
的第二個++
在第一個++
返回的副本上調用operator++
++
,而不是在原始pos
上調用operator++
。 因此,原來的pos
只遞增一次。
Point& operator++()
應該通過引用非const返回,以便我們做,
Point p;
++++p;
如果它返回Point
,那么您將嘗試修改不是您想要的行為的臨時文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.