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