栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

C++中的左值与右值

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++中的左值与右值

C++中所有的表达式和变量要么是左值,要么是右值; 左值是非临时对象,可以在多条语句引用使用的对象是左值;右值是临时的对象,只在当前语句有效。

   int i = 0;  其中i是左值,0是右值

右值可以出现在复制的左边

  (( i > 0)? i : j) = 1;   i, j都是左值, 0,1是右值

右值是可以被修改的,如:

  new T().set().get();  

new T()是右值,通过set()方法修改了对象,也就是右值

声明: 左值的引用声明 &, 右值的引用声明 &&
int &a (左值引用), int && a(右值引用)

注意:但是如果临时对象通过一个接受右值的函数传递给另一个函数时,就会变成左值,因为这个临时对象在传递过程中,变成了命名对象

void process_val(int& val){
    ALOGE("process val & %d", val);
}

void process_val(int&& val){
    ALOGE("process val && %d", val);
}

void forward(int&& val){
    process_val(val);
}

forward(1);
输出:process val & 1

作用:右值引用是用来支持转移语义的。转移语义可以将资源 ( 堆,系统对象等 ) 从一个对象转移到另一个对象,这样能够减少不必要的临时对象的创建、拷贝以及销毁,能够大幅度提高 C++ 应用程序的性能。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1036659.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号