C++11 --- 右值引用、移动语义
右值引用、移动语义
- 一、左值和右值
- 二、左值引用、右值引用及其本质
- 2.1 左值引用、右值引用
- 2.2 汇编角度:引用本质是一个伪装成变量的指针
- 2.3 右值引用本身是左值
- 2.4 左值和右值的参数匹配
- 三、右值引用与移动语义的使用场景
- 3.1 移动构造和移动赋值
- 3.2 右值引用解决传值返回的问题
- 3.2.1 右值(临时变量)对象构造,只有拷贝构造,没有移动构造的场景
- 3.2.2 右值(临时变量)对象构造,只有拷贝构造,没有移动构造的场景
- 3.2.3 右值(临时变量)对象赋值,只有拷贝构造和拷贝赋值,没有移动构造和移动赋值的场景
- 3.2.4 右值(临时变量)对象赋值,既有拷贝构造和拷贝赋值,也有移动构造和移动赋值的场景
- 四、引用折叠与完美转发、可变模板参数、emplace_back
- 4.1 引用折叠、万能引用
- 4.2 完美转发forward
- 4.3 可变模板参数
- 4.4 emplace_back
一、左值和右值

二、左值引用、右值引用及其本质
2.1 左值引用、右值引用

2.2 汇编角度:引用本质是一个伪装成变量的指针

2.3 右值引用本身是左值

2.4 左值和右值的参数匹配

三、右值引用与移动语义的使用场景
3.1 移动构造和移动赋值

3.2 右值引用解决传值返回的问题
3.2.1 右值(临时变量)对象构造,只有拷贝构造,没有移动构造的场景

3.2.2 右值(临时变量)对象构造,只有拷贝构造,没有移动构造的场景


3.2.3 右值(临时变量)对象赋值,只有拷贝构造和拷贝赋值,没有移动构造和移动赋值的场景

3.2.4 右值(临时变量)对象赋值,既有拷贝构造和拷贝赋值,也有移动构造和移动赋值的场景

四、引用折叠与完美转发、可变模板参数、emplace_back
4.1 引用折叠、万能引用

4.2 完美转发forward

4.3 可变模板参数

4.4 emplace_back

