c++中的左值和右值,右值引用到底是什么?关于引用这一节看得很迷糊。

 我来答
54rljx
2014-02-10 · 超过18用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:48.5万
展开全部
左值 顾名思义 等号左边的值。其实左值和右值是C++里面比较基础且严谨的概念(具体的完整定义自己查书吧,我也背不下来。),一般在老外的书里常提,国产渣书几乎没这个词。
下面是我自己的理解:其实左值就是可以赋值的值,基本上就用户定义的变量。右值就是等号右边的。可以是变量,也可以是常量。
比如 int a = 5; int b = a;
a,b都是用户定义的变量,可以随便赋值。5是字面值常量。 你可以对a,b求地址 比如 int* p = &a;
但是你不能对5求地址。 比如int *p = &5;
另外 C++ primer里面提到 前缀++返回左值,后缀返回右值。也可以通过左值与右值的概念来理解++操作法。比如 ++a = 10; 可以编译通过 (a++) = 10; 编译错误。同样 你也不能对 (a++)的值取地址。
其他的右值概念比如 函数的返回值等 也不能取地址。
右值引用是C++11中的概念,目的就是解决上面所说的函数返回值等问题。比如你返回了一个vector,可能包含很多元素,一次return就会产生一个临时变量,需要构造与析构。而实际上你可能只是这样写 vector ret = getVector(); 本身的ret还需要从临时的返回值里面再构造一次。产生浪费。C++ 11里面配合MOVE语义可以解决这种情况。 具体的我也说不太明白了,总之这个是C++新特性。
samplezuo
2014-02-10 · TA获得超过320个赞
知道小有建树答主
回答量:452
采纳率:100%
帮助的人:256万
展开全部
引用你就理解为把柄,好比说你的手机号码和你的关系
手机号是你的引用但不是你本身,但是通过手机号就可以找到你
更多追问追答
追问
我知道引用和指针比较类似,但左值和右值我看书上说的看晕了。翻译的书你懂的。
追答
引用其实就是指针,没必要挑字眼哦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式