首页 > 后端开发 > C++ > 什么条件确保 C 11 中移出对象的有效性?

什么条件确保 C 11 中移出对象的有效性?

DDD
发布: 2024-12-09 12:06:15
原创
801 人浏览过

What Conditions Ensure the Validity of a Moved-From Object in C  11?

C 11 中“移自”对象的有效状态

问题:

中C 11、当一个对象被移走时,它进入一种未指定的状态。这样的“移出”对象应该满足什么条件才能保持有效?

答案:

移出对象的有效性由类型的规范定义,并且文档。

对于标准库类型,移出的对象被置于未指定但有效的状态,这意味着它们满足该类型的所有标准要求,除非另有说明。用户必须查询状态以确定有效操作。

对于开发人员定义的类型,您可以定义并记录构成有效状态的内容以及移出对象的允许操作。

在以下上下文中提供的 pimpl 习语示例:

class Foo {
    std::unique_ptr<FooImpl> impl_;
};
登录后复制

您可以指定从 Foo 对象移动会使 do_stuff 操作无效,使其未定义 行为。这是合理的,因为移动意味着不能对移出的对象执行进一步的操作。

或者,您可以为移出的 Foo 对象定义特定状态,确保标准库的概念要求是还是遇见了。这将允许您将移出的 Foo 对象与标准库一起使用,而不会出现未定义的行为。

请注意,标准库概念不考虑移出的对象。因此,如果移出的对象没有根据相关概念保持有效状态,则将它们与标准库一起使用将导致未定义的行为。

以上是什么条件确保 C 11 中移出对象的有效性?的详细内容。更多信息请关注PHP中文网其他相关文章!

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