该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处
本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105089274
右值引用和移动构造函数
对象的拷贝控制
C++11之前,对象的拷贝控制由三个函数决定:拷贝构造函数(Copy Constructor)、拷贝赋值运算符(Copy
Assignment operator)和析构函数(Destructor)。
移动构造函数(Move Constructor)和移动赋值运算符(Move Assignment operator)。
构造函数与赋值运算符的区别
构造函数在创建或初始化对象的时候调用,而赋值运算符在更新一个对象的值时调用。
左值与右值的区别
能出现在赋值号左边的表达式称为“左值”,不能出现在赋值号左边的表达式称为“右值”。一般来说,左值是可以取地址的,右值则不可以。
非 const 的变量都是左值。函数调用的返回值若不是引用,则该函数调用就是右值。一般的“引用”都是引用变量的,而变量是左值,因此它们都是“左值引用”。
C++11 新增了一种引用,可以引用右值,因而称为“右值引用”。无名的临时变量不能出现在赋值号左边,因而是右值。右值引用就可以引用无名的临时变量。定义右值引用的格式如下:

本文详细介绍了C++11中右值引用和移动构造函数的概念,探讨了它们如何提高程序效率。通过实例展示了移动构造函数、移动赋值运算符的工作原理,并比较了它们与拷贝构造函数、赋值运算符的不同。同时,文章讨论了MoveSwap函数和Swap函数在利用右值引用提高效率方面的应用。
订阅专栏 解锁全文
991

被折叠的 条评论
为什么被折叠?



