这些重载方法如何彼此不同?

时间:2016-03-09 03:07:32

标签: c++ oop

所以这个方法在于 Vector3D 类。请问有人可以告诉我如何使用它?

    Vector3D &operator*=(const double factor){
        x *= factor;
        y *= factor;
        z *= factor;
        return *this;
    }

它与这种方法有什么不同?

inline Vector3D operator*(double s, const Vector3D &v) {
    return Vector3D(s * v.getX(), s * v.getY(), s * v.getZ());
}

1 个答案:

答案 0 :(得分:4)

operator *=似乎会修改现有的Vector3D对象。它的值由运营商改变。

operator *不会修改现有的Vector3D对象,它会创建此类的新实例,显然是为了表示乘法运算符的值,并返回新对象。现有对象保持不变。

之间的区别相同
 int a;

 int b;


 // ...

 a *= b;

' a'的价值乘以'''' a'现在包含相乘的结果,并且:

 c = a * b;

您将ab相乘,乘法的结果将转移到其他位置。 ab的原始值保持不变。