C++怎么使移动源对象保持有效状态
发表于:2024-11-21 作者:千家信息网编辑
千家信息网最后更新 2024年11月21日,这篇文章主要讲解了"C++怎么使移动源对象保持有效状态",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C++怎么使移动源对象保持有效状态"吧!C.64:
千家信息网最后更新 2024年11月21日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安全错误
数据库的锁怎样保障安全
汉中网络安全信息化委员会
软件开发怎么写加薪申请
服务器主板怎么看型号
网络安全人员讲座
威海商城软件开发解决方案
伟思信安网络安全
赛天服务器
ios推送服务器
qq照片回收站服务器错误
网络安全多少年检测评估
山东卫星授时服务器
农村网络安全普及教育活动
国家网络安全宣传主题班会
南昌软件开发工资水平
正规的浪潮服务器店面哪家好
论文摘要软件开发
5g对网络安全有什么利弊
上海计算机网络技术专升本
天象网络技术重庆分公司
网络安全教育主题教育
山东第三方软件开发定制费用
淄博市网络安全公益广告
华为 软件开发 面试
数据库金额表删除
对于网络安全的特点都有什么
软件开发流程确认文档
cdma软件开发公司
网络安全工程师可以开公司吗
山东标准软件开发预算
怎么查询wifi网络安全密钥