这个成语是什么,什么时候应该使用?它解决了哪些问题?当使用C ++ 11时,成语是否会改变?什么是复制和交换习语?
3 回答
慕后森
TA贡献1802条经验 获得超5个赞
分配的核心是两个步骤:拆除对象的旧状态,并将其新状态构建为其他对象状态的副本。
基本上,这就是析构函数和复制构造函数的作用,因此第一个想法是将工作委托给它们。然而,由于破坏必定不会失败,而建筑可能,我们实际上想要反过来做:首先执行建设性部分,如果成功,那么做破坏性部分。复制和交换习惯用法就是这样做的:它首先调用类的复制构造函数来创建临时文件,然后用临时文件交换数据,然后让临时的析构函数破坏旧状态。
以来swap()
应该永远不会失败,唯一可能失败的部分是复制结构。首先执行此操作,如果失败,则目标对象中不会更改任何内容。
在其精炼形式中,通过初始化赋值运算符的(非引用)参数来执行复制来实现复制和交换:
T& operator=(T tmp){ this->swap(tmp); return *this;}
- 3 回答
- 0 关注
- 578 浏览
添加回答
举报
0/150
提交
取消