概述
c++11 引入了新特性,提高了性能。
右值引用
转移语义
完美转发
更加高效容器
右值引用
右值引用优化性能,避免深拷贝
有时候会有类分配了大量堆内存,而且我们需要继续用下去,为了避免在拷贝这个对象时重新分配,可以使用右值引用。重载掉两个函数:右值构造函数、右值赋值操作函数。
在使用这个特性的时候,将会配合使用转移语义,将一个左值转换成右值,用于交接使用权。
移动语意
1 | int a = 1; // 左值 |
完美转发
只有在需要的时候,才调用复制构造函数
左值被转发为左值,右值被转发为右值
要解释完美转发的原理,首先引入 C++11 的引用折叠原则
左值-左值 T& & ——》左值
左值-右值 T& && ——》左值
右值-左值 T&& & ——》左值
右值-右值 T&& && ——》右值