可能重复:
什么是三法则?
何时需要定义自己的赋值运算符?
通常情况下,你需要在与需要定义自己的复制构造函数相同的情况下定义自己的赋值运算符——也就是说,在默认的复制无法满足需求时。这通常发生在对象管理动态分配的内存或其他需要特殊复制的资源的情况下。
例如,如果你有一个类,该类管理指向动态分配内存的指针,那么默认的赋值运算符将只会复制指针。通常,这不是你想要的结果——你希望每个对象实例都有其自己的内部分配数据的副本,因此你需要一个特殊的赋值运算符来分配自己的内存并执行复制。例如,当被复制或赋值时,std::vector
需要执行此操作。
mutex
。 - David Rodríguez - dribeas