操作重载运算符++()
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;
}
};
对于运算符++(),我知道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
。因此,原始pos
仅递增一次。
Point& operator++()
应该通过引用非常量返回,以便让我们做,
Point p;
++++p;
如果它返回Point
,您将尝试修改临时行为,这不是您想要的行为。
相关文章:
- 使用C++中的模板和运算符重载执行矩阵运算
- 为什么这个运算符<重载函数对 STL 算法不可见?
- <T> 通过模板化运算符重载将 std::complex 乘以双倍
- C++20概念:需要运算符重载
- 使用赋值运算符重载从类中返回jobject
- 在运算符重载定义中使用成员函数(const错误)
- 字节到位运算符重载C++
- 为什么在运算符重载时需要参考?
- 类中 c++ 的运算符 + 重载
- 算术复合运算符重载为非成员
- 运算符重载 (+),用于添加两个具有 C++ 的数组
- 交换运算符 + 重载会导致无限递归
- 如何理解新的运算符重载?
- 向量保持复数的运算符重载
- 如何创建运算符重载?
- 链接列表运算符重载没有打印出我想要的内容
- C++:需要帮助了解运算符重载错误
- 使用模板化运算符重载 XOR 运算符失败
- 如何确保接受的C++模板类型使运算符重载?
- 运算符重载使用运算符+添加类模板