对移出对象允许的操作
C 标准定义了对已移出对象允许执行哪些操作。这些对象被认为处于未指定状态,允许进行有限范围的操作。
标准参考
第 17.6.5.15 节 [lib.types.movedfrom]该标准规定,移出的对象“应放置在有效但未指定的位置”状态。”
非限制性操作
处于未指定状态的对象可以进行没有前提条件的操作。常见示例包括:
限制性的操作
带有前提条件的操作,例如解引用或pop_back,不能直接对移出的对象执行,因为对象的未指定状态可能无法满足必要的要求。
示例:std::swap
示例交换函数模板依赖于赋值到移出的对象(第 2 行和第 3 行)。这是有效的,因为赋值是非限制性操作。
替代构造函数语法
关于第 1 行,使用 T c = std::move(a) ;而不是 T c(std::move(a));是出于效率原因。直接初始化需要调用复制构造函数,而赋值则不需要。
以上是允许对移出的 C 对象执行哪些操作?的详细内容。更多信息请关注PHP中文网其他相关文章!