若一个类重载 = 符号
class_name& operator=(const class_name& other)
通过函数返回一个临时的class来定义一个 已声明的 变量时
class_name c = class_name(arg);
会进行较多的工作:先用arg的对应构造函数生成一个临时var, 然后=重载函数将var作为参数才能生成c.
而通过右值引用重载 =
class_name& operator=(class_name&& other) { sawp(this->data, other.data); }
与上相同的方式定义变量时,直接将other(临时变量)的内部空间变成this的,仅进行一次构造和析构。
右值引用:就是必须绑定到右值的引用,C++11中右值引用可以实现“移动语义”,通过 && 获得右值引用。
右值引用和相关的移动语义是C++11标准中引入的最强大的特性之一,通过std::move()可以避免无谓的复制,提高程序性能。
引用自
简单地说,减少右值初始化左值的开销。