Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 操作重载运算符++;()_C++_Operator Overloading - Fatal编程技术网

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;