不使用模板重载乘法运算符

时间:2015-04-11 21:36:16

标签: c++ operator-overloading

所以我试图将一个对象乘以这样的常量,

    Vector3d v(2,4,6);
    Vector3d v1 = v0*2;

重载我有的乘法运算符,

    class Vector3d
    {
         private:
              float x,y,z,a,b,c;
              string p;
         public:
              Vector3d(float a,float b,float c)
              {
                    x = a;
                    y = b;
                    z = c;
              }
              Vector operator*(const float& s) const
              {
                     return a * s;
                     return b * s;
                     return c * s;
              }
              void print(string s);
    };

我很困惑应该怎么做,因为我从未实现过运算符重载,我猜这是应该怎么做的。我还没有学过模板。

1 个答案:

答案 0 :(得分:1)

操作员可能会超载以下

class Vector3d
{
     private:
          float x,y,z;
          string p;
     public:
          Vector3d(float a,float b,float c)
          {
                x = a;
                y = b;
                z = c;
          }
          Vector3d operator *( float s ) const
          {
                 return Vector3d( x * s, y * s, z * s );
          }
          void print(string s);
};

运算符的return语句也可以写成

                 return { x * s, y * s, z * s };