左值引用和右值引用
左值和右值
一个值如果能取地址就是左值,反之就是右值
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进行写操作的右值引用