【发布时间】:2017-04-10 23:28:20
【问题描述】:
我正在尝试更全面地了解何时实施移动语义,我相信它与好处交织在一起。
到目前为止,我知道有两个。
在移动对象时保存两个可能代价高昂的操作(当知道源将很快消失且不被使用时进行复制),如果不移动一个完整的副本并且会执行一个完整的析构函数,移动将保存一个原子原子引用计数对象的递增和递减,位图的深层副本或指针持有的其他数据结构,或文件句柄的副本,其中一个将被关闭,或任何其他“复制”和“破坏”对/p>
实现无法复制(如重复)但可以移动的对象,确保只有一个对象具有相同的内容,但该对象可以移交给函数。例如。 unique_ptr 或任何无法或不需要复制但需要在一个地方创建但在其他地方使用的对象。
两者的区别在于第一个处理性能,第二个处理防止语义复制。
我的问题是,为一个类实现移动语义还有其他用途或优势吗?除了性能或确保只有一个位置包含对象的实时副本之外的考虑因素。
【问题讨论】:
标签: c++ c++11 move-semantics