首页 > 后端开发 > C++ > 您可以用 C 中的移出对象做什么?

您可以用 C 中的移出对象做什么?

Susan Sarandon
发布: 2024-12-25 12:03:09
原创
566 人浏览过

What Can You Do with a Moved-From Object in C  ?

对移出对象允许哪些操作?

C 标准定义了已移出对象的行为。这些知识对于理解某些函​​数(例如 std::swap)如何工作至关重要。

标准定义

根据标准(第 17.6.5.15 节), C 标准库类型中的对象可以被移动并随后放置在“有效但未指定的状态。”

操作的含义

当对象处于未指定状态时,您可以执行任何没有前提条件的操作。无前提操作包括:

  • 析构
  • 赋值
  • 常量观察者(例如,get、empty、size)

但是,操作有先决条件的通常不能在没有进一步检查的情况下执行。例如:

  • 取消引用
  • pop_back

示例:std::swap

std: :swap 函数,如原始问题所示,需要分配给移出的对象。这是可能的,因为赋值是无前提操作。

附加说明:T c = std::move(a) 与 T c(std::move(a))

在 std::swap 实现中,使用直接移动赋值 T c = std::move(a) 而不是复制构造函数 T c(std::move(a))。这样做是为了避免不必要的 a 副本,这会导致性能损失。

以上是您可以用 C 中的移出对象做什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

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