如何在C++中重载一元减运算符? [重复]

问题描述 投票:0回答:2

我正在实现向量类,我需要得到一些向量的反面。是否可以使用运算符重载来定义此方法?

这就是我的意思:

Vector2f vector1 = -vector2;

这是我希望该操作员完成的任务:

Vector2f& oppositeVector(const Vector2f &_vector)
{
 x = -_vector.getX();
 y = -_vector.getY();
 
 return *this;
}
c++ operator-overloading
2个回答
145
投票

是的,但你不给它提供参数:

class Vector {
   ...
   Vector operator-()  {
     // your code here
   }
};

请注意,您不应返回 *this。一元 - 运算符需要创建一个全新的 Vector 值,而不是更改它所应用的对象,因此您的代码可能看起来像这样:

class Vector {
   ...
   Vector operator-() const {
      Vector v;
      v.x = -x;
      v.y = -y;
      return v;
   }
};

35
投票

Vector2f operator-(const Vector2f& in) {
   return Vector2f(-in.x,-in.y);
}

可以在课堂内,也可以在课堂外。我的示例位于命名空间范围内。

© www.soinside.com 2019 - 2024. All rights reserved.