【问题标题】:When to use overloaded assignment operator? [duplicate]何时使用重载赋值运算符? [复制]
【发布时间】:2011-06-13 20:55:38
【问题描述】:

可能重复:
What is The Rule of Three?

何时需要定义自己的赋值运算符?

【问题讨论】:

  • 投票结束我自己的问题。

标签: c++


【解决方案1】:

通常,在需要定义自己的复制构造函数的相同情况下,您需要定义自己的赋值运算符 - 即当默认副本不会剪切它时。当您的对象管理需要特别复制的动态分配的内存或其他资源时,就会发生这种情况。

例如,如果您有一个管理指向动态分配内存的指针的类,则默认赋值运算符将简单地复制 指针。通常,这不是您想要的 - 您希望每个对象实例都有自己的已分配数据的内部 副本,因此您需要一个特殊的赋值运算符来分配自己的内存并执行复制。例如,这是 std::vector 在复制或分配时需要执行的操作。

【讨论】:

  • 是的,管理动态内存是我的猜测。
  • @cpx:实际上它更通用一点:管理默认构造函数无法正确执行或不可用的任何类型的资源。这包括指针持有的内存,也包括任何其他资源,例如 mutex
猜你喜欢
  • 1970-01-01
  • 2017-11-21
  • 1970-01-01
  • 2019-11-17
  • 2018-05-13
  • 2021-10-22
  • 2014-10-12
  • 2019-07-30
  • 1970-01-01
相关资源
最近更新 更多