如何在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; }