如何评价 C++11 的右值引用特性

 我来答
usernamevalid
2017-09-13 · TA获得超过4417个赞
知道小有建树答主
回答量:2001
采纳率:71%
帮助的人:794万
展开全部
这个特性就是为了解决c++引用的一些性能问题提出的。 例如我们int a = 0;int& b = a;这样我们就得到一个0的引用。 但是这样写生成了一个临时变量a(我们只需要一个0的引用), 有人就会这样写:int& b= 0;然而这样就报错了... 因为0是右值, 是临时的没有地址的, 当然就不能给一个引用。 可以说是瞬间就没了。 同理函数的返回值也是临时的(右值), 比如 int& a = fun()一样编译不了。 为了节省中间变量, 也为了减少对象拷贝的次数(临时变量到左值有可能要调用拷贝构造函数,否者瞬间就没了)。 c11提出了右值引用的概念。 可以将临时值绑定到引用, 来延长生命周期(不再是下一行就没了,而是和普通局部变量一样了), 这样不仅减少了拷贝的次数,也减少了中间变量。 比如int&& a = 0; 这样即使0这样一个立即数, 我们也可以用引用去访问了。
追答
补充一下, c c++ 区分左右值的方法是有没有地址, 也就是说是否能保存下来。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式