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

发布于 2024-08-19 15:48:52 字数 290 浏览 5 评论 0原文

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

这就是我的意思:

Vector2f vector1 = -vector2;

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

Vector2f& oppositeVector(const Vector2f &_vector)
{
 x = -_vector.getX();
 y = -_vector.getY();
 
 return *this;
}

I'm implementing vector class and I need to get an opposite of some vector. Is it possible to define this method using operator overloading?

Here's what I mean:

Vector2f vector1 = -vector2;

Here's what I want this operator to accomplish:

Vector2f& oppositeVector(const Vector2f &_vector)
{
 x = -_vector.getX();
 y = -_vector.getY();
 
 return *this;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

新一帅帅 2024-08-26 15:48:52

是的,但您不向它提供参数:

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

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

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

Yes, but you don't provide it with a parameter:

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

Note that you should not return *this. The unary - operator needs to create a brand new Vector value, not change the thing it is applied to, so your code may want to look something like this:

class Vector {
   ...
   Vector operator-() const {
      Vector v;
      v.x = -x;
      v.y = -y;
      return v;
   }
};
小耗子 2024-08-26 15:48:52

可以

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

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

It's

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

Can be within the class, or outside. My sample is in namespace scope.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文