当您需要定义自己的赋值运算符时?
答案 0 :(得分:12)
通常,当您需要定义自己的复制构造函数时,即在默认副本不会删除它时,您需要在相同的情况下定义自己的赋值运算符。当您的对象管理动态分配的内存或需要特殊复制的其他资源时,会发生这种情况。
例如,如果您有一个管理指向动态分配内存的指针的类,则默认赋值运算符将只复制指针。通常,这不是您想要的 - 您希望每个对象实例都拥有自己的已分配数据的内部副本,因此您需要一个特殊的赋值运算符来分配自己的内存并执行复制。例如,这是std::vector
在复制或分配时需要执行的操作。