在 Class 中重载 = 运算符

Overloading the = Operator in a Class

我构建了一个四元数 class,想知道是否应该重载 = 运算符。重载它有什么更大的好处吗?不超载有什么坏处?

如果我重载它,它将像这样完成:

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

I've built a quaternion class and want to know if I should overload the = operator. Is there any greater benefit to overloading this? What are the detriments to not overloading it?

您还没有显示您的 class 定义。没有这个就无法发表评论。通常,如果您的 class 确实(不)拥有任何间接成员(指针)的所有权,那么默认生成的复制构造函数/赋值运算符就足够了。这些默认值按值执行成员复制(复制每个成员)。如果您的成员之一恰好是一个指针,那么它也将按值复制(并且赋值的 rhs/source 仍将包含原始指针)。问题出现在第一次删除任一个 source/destination 赋值时,其中一个对象删除了 "owned" 内存,而另一个对象仍然持有它(通过间接成员)。