基本上,如果你有一个析构函数(不是默认的析构函数),这意味着你定义的类有一些内存分配。假设该类由一些客户端代码或你在外部使用。
MyClass x(a, b);
MyClass y(c, d);
x = y; // This is a shallow copy if assignment operator is not provided
如果 MyClass 仅包含一些原始类型的成员,则默认赋值运算符将起作用,但如果它包含一些没有赋值运算符的指针成员和对象,则结果将不可预测。因此,我们可以说,如果在类的析构函数中要删除某些内容,我们可能需要深层复制运算符,这意味着我们应该提供复制构造函数和赋值运算符。