左值、右值以及移动语义

简单理解,左值拥有地址,右值没有地址,是一个临时变量。

左值不一定在左边,在右边的不一定是右值

    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一个意思

posted @   海蓝笨  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示