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

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

Patricia Arquette
发布: 2025-01-01 14:08:10
原创
857 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板