C++怎么使移动源对象保持有效状态
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章主要讲解了"C++怎么使移动源对象保持有效状态",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C++怎么使移动源对象保持有效状态"吧!C.64:
千家信息网最后更新 2025年02月01日C++怎么使移动源对象保持有效状态
C.64:移动操作在完成移动之后,移动源对象应该保持有效状态Reason(原因)
译者注 Example(示例) Note(注意)
Note(注意)
Enforcement(实施建议)
这篇文章主要讲解了"C++怎么使移动源对象保持有效状态",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C++怎么使移动源对象保持有效状态"吧!
C.64:移动操作在完成移动之后,移动源对象应该保持有效状态
Reason(原因)
这是普遍假定的语义。当y=std::move(x)被执行之后,y的值应该变为x,而x应该处于有效状态。
x的值被移除和状态无效不是一回事。
template
class X { // OK: value semantics
public:
X();
X(X&& a) noexcept; // move X
void modify(); // change the value of X
// ...
~X() { delete[] p; }
private:
T* p;
int sz;
};
X::X(X&& a)
:p{a.p}, sz{a.sz} // steal representation
{
a.p = nullptr; // set to "empty"
a.sz = 0;
}
void use()
{
X x{};
// ...
X y = std::move(x);
x = X{}; // OK
} // OK: x can be destroyed
Note(注意)
理想情况下,移动源对象应该变为默认值。除非有非常好的理由,否则一定要这么做。然而,并不是所有的类型都有默认值,有些类型构建有效状态的代码很高昂。标准的要求只是该对象可以被销毁。通常,我们可以以很小的代价很容易地做得更好:标准库的假设是可以为移动源对象赋值。保证移动后的移动源对象处于某种(不可避免地定义了的)有效状态。
Note(注意)
除非有特别强烈的理由不那么做,否则一定要保证在x=std::move(y)执行之后y=z可以按照通常的语义执行。
(不可执行)找到移动操作中的成员被赋值的情况。如果存在默认构造函数,比较移动操作中的赋值操作和默认构造函数中的赋值操作。
感谢各位的阅读,以上就是"C++怎么使移动源对象保持有效状态"的内容了,经过本文的学习后,相信大家对C++怎么使移动源对象保持有效状态这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
移动
对象
状态
有效
C++
情况
学习
内容
函数
标准
理由
类型
语义
a.p
保证
高昂
不可避免
代价
代码
原因
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
武汉学软件开发哪里好
ps网络安全手册答辩
软件开发外派的坏处
广东服务器电源特点
db2 管理服务器创建
阿里云服务器如何做临时防护
西安明迅网络技术有限公司
使用网络安全手抄报
app向服务器自动上传日志
日韩数据库
正星加油机数据库配置
2012服务器管理器进不去
北京网络安全数据2019
软件开发安全协议范本
户籍所在地区数据库
专业软件开发价格检测中心
庄河天气预报软件开发
网络安全社会的特性
与网络安全相关的学习
数据库设置端口映射
ps网络安全手册答辩
网络安全法合规案例
思科的网络安全值得考吗
北京易诚互动网络技术有限公司
出国翻译官软件开发公司
外国科技互联网标志
翔优网络安全工程师
海口软件开发软件
解除数据库锁定
台湾大带宽服务器