何时使用重载赋值运算符?

5

投票关闭了我自己的问题。 - user963241
1个回答

12

通常情况下,你需要在与需要定义自己的复制构造函数相同的情况下定义自己的赋值运算符——也就是说,在默认的复制无法满足需求时。这通常发生在对象管理动态分配的内存或其他需要特殊复制的资源的情况下。

例如,如果你有一个类,该类管理指向动态分配内存的指针,那么默认的赋值运算符将只会复制指针。通常,这不是你想要的结果——你希望每个对象实例都有其自己的内部分配数据的副本,因此你需要一个特殊的赋值运算符来分配自己的内存并执行复制。例如,当被复制或赋值时,std::vector 需要执行此操作。


是的,管理动态内存是我的猜测。 - user963241
3
实际上,它更加通用:管理任何类型的资源,其中默认构造函数无法正确处理或不可用。这包括由指针持有的内存,以及任何其他资源,例如mutex - David Rodríguez - dribeas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接