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

C++标准中的移动概念

  •  2
  • Patrycjerz  · 技术社区  · 7 年前

    我很好奇C++ISO文档中对移动对象的描述在哪里。我只看到了有关右值引用、移动构造函数、移动赋值运算符及其语法的信息。我找不到“移动”被描述为在对象之间移动资源的正式原因。

    1 回复  |  直到 7 年前
        1
  •  5
  •   R Sahu    7 年前

    从…起 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1377.htm :

    移动语义主要是关于性能优化:能够将昂贵的对象从内存中的一个地址移动到另一个地址,同时窃取源的资源,以便以最小的开销构建目标。

    在一定程度上,当前语言和库中已经存在移动语义:

    • 在某些上下文中复制构造函数省略
    • auto\u ptr“复制”
    • 列表::拼接
    • 在容器上交换

    所有这些操作都涉及将资源从一个对象(位置)转移到另一个对象(至少在概念上)。所缺乏的是统一的语法和语义,以使泛型代码能够移动任意对象(就像今天的泛型代码可以复制任意对象一样)。标准库中有几个地方可以从移动对象而不是复制对象的能力中获益匪浅(将在下面进行深入讨论)。