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

我正在实现vector类,我需要得到一个向量的相反。 有没有可能使用运算符重载来定义这个方法?

这是我的意思:

Vector2f vector1 = -vector2; 

以下是我希望这个操作员完成的事情:

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

谢谢。

是的,但是你不提供一个参数:

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

请注意,你不应该返回*这个。 一元运算符需要创build一个全新的Vector值,而不是改变它所应用的东西,所以你的代码可能看起来像这样:

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

它的

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

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

在C ++(基于GMP)devise高精度算术库时,只是寻找答案。 与所说的相反,这个一元“ – ”必须返回新的价值,这个代码适用于我:

 bigdecimal& bigdecimal::operator - () { mpf_neg(this->x, this->x);//set left mpf_t var to -right return *this; }