C++11新特性:右值引用、移动构造函数、移动赋值运算符
创始人
2025-05-28 17:54:58

1、右值引用

1.1 符号:&&

右值引用 有一个重要的性质:只能绑定到一个将要销毁的对象。因此,可以将一个右值引用的资源“移动”到另一个对象中。

“引用”就是一个对象的别名。同样,右值引用 也是一个对象的别名而已。

类型 && 引用名 = 右值表达式;

int && a = 10;

1.2 右值:一切常数、字符、字符串,都是“右值”!!不能放置在“赋值操作符”的左边

1.3 在C++11之前右值不能被引用的。如int &a =1; //无法从“int”转化为“int&”。 我们最多只能用常量引用来绑定一个右值。因为规定不允许修改右值。

在C++11中,可以引用右值,使用&&实现:int &&a = 1;  //OK.

2、移动构造函数

有些时候,我们没有必要复制对象,只需要移动它们!!

移动构造函数:只是对临时对象(右值)的内存,“变更所有权”。

调用移动构造函数的情况:只有当用一个右值,或者将亡值初始化另一个对象的时候,才会调用移动构造函数。

                               

当传入“临时变量(右值)”时,编译器会调用“移动构造函数”。

说明:遇到这种情况,编译器会很智能的帮你选择类内合适的构造函数去执行,

如果没有移动构造函数,它只能默认的选择 复制(拷贝)构造函数;

如果同时存在移动构造函数和复制构造函数,会优先选择移动构造函数;

【重点】
1、移动构造是C++11标准中提供的一种新的构造方法;
2、移动构造接管源对象,既不会产生额外的拷贝开销,也不会给新对象分配内存空间。提高程序的执行效率,节省内存消耗。
3、移动构造函数的第1个参数:必须是自身类型右值引用 (不需要是const);

相关内容

热门资讯

商务英语课文范文29篇【最新... 商务英语课文范文29篇 篇一Title: The Importance of Effective C...
野餐英语作文【精简6篇】 野餐英语作文 篇一:A Fun-filled PicnicPicnics are a popular...
英语作文after scho... 英语作文after school 篇一The Importance of After-School ...
friendship英语作文... friendship英语作文 篇一Friendship is a precious bond tha...
不锈期货回升重返12700关口... 来源:市场资讯 (来源:佛山市金属材料行业协会) 要钢资讯2025年07月17日 16:42江苏 本...