左值、右值以及移动语义
简单理解,左值拥有地址,右值没有地址,是一个临时变量。
左值不一定在左边,在右边的不一定是右值
int i = 10; int a = i;//把左值赋给左值
左值引用
非const右值不能赋值给左值引用
int SetValue(int value) { return value; } int SetValue2(int& value){ return value; } int main() { int i = 10; int a = i;//把左值赋给左值 SetValue(i); SetValue(10); SetValue2(i); SetValue2(10);//错误 }
const的情况下
int& b = 10;//错误,右值无法赋给左值引用 const int& c = 10;//可以,等价于int temp=10; // const int&c=temp;相当于临时创建了一个左值
int SetValue3(const int& value) {//这样的形式,SetValue3(10)或者SetValue(a)都不会报错 return value; }
右值引用
int SetValue3(const int& value) {//这样的形式,SetValue3(10)或者SetValue(a)都不会报错 return value; } int SetValue3(int&& value) {//右值引用 return value; } int main() { SetValue3(10);//会优先调用传参是右值引用的函数 SetValue3(a); }
const int&& value。就相当于不能修改value这个值,和const一个意思
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端