何时使用重载赋值运算符?
可能重复:
什么是三项规则?
当你需要定义你自己的赋值操作符时?
一般来说,当你需要定义自己的拷贝构造函数时,你需要在相同的情况下定义你自己的赋值运算符 - 也就是说,当缺省拷贝不会削减它时。 当您的对象管理动态分配的内存或需要专门复制的其他资源时,会发生这种情况。
例如,如果您有一个管理指向动态分配内存的指针的类,则缺省赋值操作符将简单地复制该指针。 通常,这不是您想要的 - 您希望每个对象实例都拥有自己的分配数据的内部副本,因此您需要一个特殊的赋值运算符来分配自己的内存并执行一个副本。 例如,这是std::vector
在复制或分配时需要执行的操作。