左值引用和右值引用

左值和右值

一个值如果能取地址就是左值,反之就是右值

int a = 10     //a是左值,10是右值

左值引用

左值引用只能绑定左值

int l = 10;
int& a = l;      //正确
int& a = 10;     //错误,10是右值,不能被左值引用绑定

const int& a = 10; //正确 这行代码相当于下面注释的两行代码
//const int tmp = 10;
//const int& a = tmp;

右值引用

右值引用只能绑定右值

右值引用比用const修饰左值引用更好的地方在于可以对变量进行写操作

int&& a = 2;  //可以对a进行写操作的右值引用
const int&&a = 2;  //不可以对a进行写操作的右值引用
posted @ 2024-03-14 21:19  拾墨、  阅读(1)  评论(0编辑  收藏  举报