所以这个方法在于 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());
}
答案 0 :(得分:4)
operator *=
似乎会修改现有的Vector3D
对象。它的值由运营商改变。
operator *
不会修改现有的Vector3D
对象,它会创建此类的新实例,显然是为了表示乘法运算符的值,并返回新对象。现有对象保持不变。
与
之间的区别相同 int a;
int b;
// ...
a *= b;
' a'的价值乘以'''' a'现在包含相乘的结果,并且:
c = a * b;
您将a
与b
相乘,乘法的结果将转移到其他位置。 a
和b
的原始值保持不变。