繁体   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