标签:11 name 右值 特性 other C++ class 引用
若一个类重载 = 符号
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()可以避免无谓的复制,提高程序性能。
简单地说,减少右值初始化左值的开销。
标签:11,name,右值,特性,other,C++,class,引用 来源: https://blog.csdn.net/zidian666/article/details/122533143
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。