提问者:小点点

运算符重写中的不同签名


我在看一些基本的向量库,这个类有两个运算符*的签名,但是我不能理解这两者之间的区别。

vec4 vec4::operator*(float c) const {
    return vec4(data[0] * c, data[1] * c, data[2] * c, data[3] * c);
};

vec4 operator*(float c, const vec4 &v) {
    return vec4(c * v[0], c * v[1], c * v[2], c * v[3]);
};

>

  • 两者使用时外观如何?

    为什么一个使用vec4::operator而另一个仅使用operator*

    谢谢你!


  • 共1个答案

    匿名用户

    正如您在签名末尾看到的,一个具有const属性,而另一个没有。这意味着指向这些方法所在的类的指针在其中一个方法中是常量的,因此它的成员将不能更改值。