C++11 中的左值引用和右值引用的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++11 中的左值引用和右值引用的区别相关的知识,希望对你有一定的参考价值。
参考技术A 准备知识引用本质上是一个隐式指针,为对象的一个别名,通过 & 来实现。
左值是变量的地址,可以修改。
右值是变量存储的内容,可以修改,也可以不能修改。
变量的本质即存储空间的名称,编译后变为对应的地址。
分析区别
左值引用
T & a = 引用对象,显示的声明且初始化后,就相当于一个变量,由于拥有变量的相同的地址,使用也是与变量一样。
右值引用
T && a = 被引用的对象,一般不是显式的定义,用于传参和返回,与左值引用的区别,右值是一个临时变量且不变的,变量的所有权会转移,可以理解为,右值引用初始化后,被引用的对象消失,后面一般不再使用。
左值的详解
参考技术A左值可以表示对象,即具有对应的可以由用户访问的存储单元(应特别注意和类风格面向对象中的对象——类的实例的区别;Java等语言的对象即使用此种说法;C的左值相当于Java中的“变量” )。正因为如此,用于取得对象的指针的内建操作符&要求操作数是左值。
左值表示存储在计算机内存的对象,与此相对的概念是右值(rvalue),习惯上统称为左值性(lvalue-ness) 。
以上是关于C++11 中的左值引用和右值引用的区别的主要内容,如果未能解决你的问题,请参考以下文章