C++ 操作重载运算符++;()
当我用这个来执行C++ 操作重载运算符++;(),c++,operator-overloading,C++,Operator Overloading,当我用这个来执行 Point operator++(){ xpos+=1; ypos+=1; return *this; } 我明白了 不是 我认为没有引用的操作符++()仍然应该给出相同的结果,因为它会隐式调用其复制构造函数,所以尽管速度较慢,但我认为它应该给出相同的结果 当++返回副本时,++(+++pos)中的第二个++对第一个++返回的副本调用操作符+,而不是对原始pos调用。因此,原始的pos只增加一次 [3,5] /
Point operator++(){
xpos+=1;
ypos+=1;
return *this;
}
我明白了
不是
我认为没有引用的操作符++()仍然应该给出相同的结果,因为它会隐式调用其复制构造函数,所以尽管速度较慢,但我认为它应该给出相同的结果 当
++
返回副本时,++(+++pos)
中的第二个++
对第一个++
返回的副本调用操作符+
,而不是对原始pos
调用。因此,原始的pos
只增加一次
[3,5] //which is what I should be getting.
应该通过引用non-const返回以便让我们这样做
Point& operator++()
如果它返回
点
,您将试图修改临时的,这不是您想要的行为。我不理解您的困惑。显然,您知道第一个操作会返回一个pos
的副本,那么为什么您认为在之后调用pos.showPosition()
会显示这两个操作的结果呢?
[2,4]
[3,5] //which is what I should be getting.
Point& operator++()
Point p;
++++p;