代码之家  ›  专栏  ›  技术社区  ›  Demaunt

复制构造函数和移动语义之间的C++差异

  •  0
  • Demaunt  · 技术社区  · 6 年前

    为什么要使用基于移动语义的复制构造函数?我的意思是,我可以使用非常量引用并执行相同的操作:从对象中获取数据而不复制。还是没有?

    1 回复  |  直到 6 年前
        1
  •  0
  •   vbar    6 年前

    嗯,是的,您可以-例如,auto\u ptr尝试过它-但它工作得不太好:例如,您不能将具有这种破坏性副本的对象放入标准容器中,因为标准容器可能需要一个不会破坏原始副本的副本。如果插入破坏了源对象,这将是令人惊讶的,但另一方面,在某些情况下(比如源是临时的),移动是完全有意义的。因此,像往常一样,C++允许这两种情况(insert对于复制和移动是重载的),并允许(有些人会说“强制”)您在两者之间进行选择。