c++ - C++按值赋值,有什么缺点?
问题描述
最近,我偶然发现了这种模式:
class Foo {
Foo() = default;
Foo(const Foo &) = default;
Foo(Foo &&) = default;
Foo & operator=(Foo rhs) {
swap(rhs);
return *this;
}
};
仔细观察这个模式会发现,由于复制省略,这个单一的分配功能可以免费提供移动分配和“复制和交换”的复制分配。既然这么好用,又何尝不是“主流模式”呢。有没有这样做的?
注意:没有临时对象的自定义复制构造函数可以在更少的步骤中产生操作,但是,对于这个问题,明确编写复制和移动分配周围的交换可以带来什么好处。
关于可能重复的问题“什么是复制和交换习语”,我的问题假设读者已经知道它是什么。
谢谢
解决方案
推荐阅读
- html - 按钮标签的这些 HTML 属性是什么意思?
- android - 如何将文件夹的所有文件上传到Android中的Web服务器?
- wordpress - 用户注册终极会员时提交的密码如何获取?
- python - 当给定方法不存在时调用类中的另一个方法?
- flutter - 从嵌套的子视图颤振飞镖通知 AppBar
- azure-data-studio - 在 Azure Data Studio 中,查询都是断开的
- get - 如何将 Body-> Raw 中的查询转换为 url 中的查询字符串
- reactjs - 如果没有 React-hooks 和使用类组件而不是函数式组件,这个 React 代码会如何?
- wpf - 什么是违反类亲和力的例子?
- sql-server - 简单插入给出“子查询返回超过 1 个值”错误