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