在类中重载=运算符

时间:2015-07-28 04:49:22

标签: c++ operator-overloading

我已经构建了一个四元数类,想知道我是否应该重载=运算符。重载这个有什么好处吗?没有超载它有什么不利?

如果我超负荷就会这样做:

if (this != &Input) 
{
        w = Input.w;
        x = Input.x;
        y = Input.y;
        z = Input.z;
        Normalise();
        CalculateMatrix();
}
return *this;

1 个答案:

答案 0 :(得分:1)

  

我已经构建了一个四元数类,想知道我是否应该超载   =运算符。重载这个有什么好处吗?什么   是不是不会超载呢?

您还没有显示您的课程定义。如果没有这个,就无法发表评论。通常,如果您的类(不)拥有任何间接成员(指针)的所有权,那么默认生成的复制构造函数/赋值运算符就足够了。这些默认值按值执行成员复制(复制每个成员)。如果你的一个成员恰好是一个指针,那么它也会被值复制(并且赋值的rhs / source仍然包含原始指针)。在第一次删除任务的源/目的地时,当其中一个对象删除"拥有的"记忆,而另一个仍然坚持(通过间接成员)。