簡體   English   中英

操作重載operator ++()

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM