c++之简述左值引用(&)与右值引用(&&)
2017-12-21 22:05
405 查看
&与&&
对于在C++中,大家对于符号“ & ”的第一映像是引用和取地址,对符号“ && ”的第一映像是逻辑与。但是在C++11中我们会看到下方这种表示方法:
对于第一眼见到上述的表达方式时,估计会一脸懵逼。下面对此做一个简述。
引用 & 是一个类型变量的别名。
通常使用 “ & ”是作为普通的左值引用,左值是可以放在赋值号 “ = ”的左边的值。
&&是右值引用,右值是只能放在 “ = ” 右边的值,右值没有一个 “ 变量 ”名字。如:
i+j 返回的值可以视做是放在一个临时存放内存空间里的,这个空间并不能用来赋值,你不能些i+j=5等; && 可以把这种临时的值和存在变量里的值区分开来。
右值短暂,右值只能绑定到临时对象。所引用的对象将要销毁或对象没有其他用户。
初始化时右值引用一定要用一个右值表达式绑定,初始化之后,可以用左值表达式或修改右值引用的所引用临时对象的值。
右值引用是对临时对象的一种引用,它是在初始化时完成引用的,但是右值引用不代表引用临时对象后,就不能改变右值引用所引用对象的值。仍然可以在初始化后改变临时对象的值。
对于引用类型,可以用于它所引用对象类型的可以用的地方(把他当成普通变量),只不过用到的值是它所引用的对象的值,还可以用于移动构造和赋值函数的地方。
对于在C++中,大家对于符号“ & ”的第一映像是引用和取地址,对符号“ && ”的第一映像是逻辑与。但是在C++11中我们会看到下方这种表示方法:
int &&k=i+k;
对于第一眼见到上述的表达方式时,估计会一脸懵逼。下面对此做一个简述。
引用 & 是一个类型变量的别名。
通常使用 “ & ”是作为普通的左值引用,左值是可以放在赋值号 “ = ”的左边的值。
&&是右值引用,右值是只能放在 “ = ” 右边的值,右值没有一个 “ 变量 ”名字。如:
int && k =i+j;
i+j 返回的值可以视做是放在一个临时存放内存空间里的,这个空间并不能用来赋值,你不能些i+j=5等; && 可以把这种临时的值和存在变量里的值区分开来。
右值短暂,右值只能绑定到临时对象。所引用的对象将要销毁或对象没有其他用户。
初始化时右值引用一定要用一个右值表达式绑定,初始化之后,可以用左值表达式或修改右值引用的所引用临时对象的值。
右值引用是对临时对象的一种引用,它是在初始化时完成引用的,但是右值引用不代表引用临时对象后,就不能改变右值引用所引用对象的值。仍然可以在初始化后改变临时对象的值。
对于引用类型,可以用于它所引用对象类型的可以用的地方(把他当成普通变量),只不过用到的值是它所引用的对象的值,还可以用于移动构造和赋值函数的地方。
相关文章推荐
- C++——左值引用和右值引用
- 左值、右值与右值引用 & C++11中
- [C++基础]020_C++0x新特性之右值引用(int&& value)
- C++ 左值、右值、右值引用
- C++引用(左值引用,右值引用)
- 左值引用(&)和右值引用(&&)
- [RT] 左值与右值 & C++0x 右值引用
- 关于c++右值与左值引用
- C++ 0x 之左值与右值、右值引用、移动语义、传导模板
- 【转】 C++ 右值引用详…
- c++ 左值、右值、右值引用、左值引用
- C++ 0x 之左值与右值、右值引用、移动语义、传导模板(转载)
- C++ 0x 之左值与右值、右值引用、移动语义、传导模板
- c++ 左值、右值、右值引用、左值引用
- 深入理解(实例) -- c++ 右值引用 左值引用
- c++ 左值、右值、左值引用和右值引用
- C++ 左值、右值、右值引用
- C++左值引用和右值引用
- [C++基础]020_C++0x新特性之右值引用(int&& value)
- c++ 11 移动语义、std::move 左值、右值、将亡值、纯右值、右值引用