C++风格_右值引用
来源:互联网 发布:python 搜索引擎 编辑:程序博客网 时间:2024/06/08 18:47
只在定义移动构造函数与移动赋值操作时使用右值引用. 不要使用 std::forward.
定义:
右值引用是一种只能绑定到临时对象的引用的一种, 其语法与传统的引用语法相似. 例如, void f(string&& s); 声明了一个其参数是一个字符串的右值引用的函数.
优点:
用于定义移动构造函数 (使用类的右值引用进行构造的函数) 使得移动一个值而非拷贝之成为可能. 例如, 如果 v1 是一个 vector, 则 auto v2(std::move(v1)) 将很可能不再进行大量的数据复制而只是简单地进行指针操作, 在某些情况下这将带来大幅度的性能提升.
右值引用使得编写通用的函数封装来转发其参数到另外一个函数成为可能, 无论其参数是否是临时对象都能正常工作.
右值引用能实现可移动但不可拷贝的类型, 这一特性对那些在拷贝方面没有实际需求, 但有时又需要将它们作为函数参数传递或塞入容器的类型很有用.
要高效率地使用某些标准库类型, 例如 std::unique_ptr, std::move 是必需的.
缺点:
右值引用是一个相对比较新的特性 (由 C++11 引入), 它尚未被广泛理解. 类似引用崩溃, 移动构造函数的自动推导这样的规则都是很复杂的.
结论:
只在定义移动构造函数与移动赋值操作时使用右值引用, 不要使用 std::forward 功能函数. 你可能会使用 std::move 来表示将值从一个对象移动而不是复制到另一个对象.
阅读全文
1 0
- C++风格_右值引用
- c++move语义与右值引用
- C++:右值引用与移动构造
- [C++]右值引用和转移语义
- C++primer学习笔记--右值引用
- [C++]C++11右值引用
- 【C++】右值引用与模板
- C++——左值引用和右值引用
- C++——左值引用和右值引用
- C++风格_引用参数
- [C++11]_[初级]_[左值引用声明和右值引用声明]
- C++/C++11中左值、左值引用、右值、右值引用的使用
- 右值引用
- 右值引用
- C++右值引用
- 右值引用
- 右值引用
- C++右值引用
- 英文投稿的状态
- 前端基础 JavaScript Data、Math对象 笔记
- 手把手用 IntelliJ IDEA 和 SBT 创建 scala 项目
- Python 第一节
- JVM原理之垃圾收集
- C++风格_右值引用
- [ Java学习 ] 查阅资料整理 002
- yum和rpm
- CentOS7下部署CDH5.9(HA)
- 简单的图片轮播器
- 【数据结构】使用栈和队列判断字符串是否是回文
- 真实的三国·《三国历史的教训》(好书推荐)
- 网站备案
- JDBC(一 JDBC的基本操作CRUD)