首页 >后端开发 >C++ >允许对移出的 C 对象执行哪些操作?

允许对移出的 C 对象执行哪些操作?

Patricia Arquette
Patricia Arquette原创
2025-01-01 14:08:10860浏览

What Operations Are Allowed on Moved-From C   Objects?

对移出对象允许的操作

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn