左值:
1、等号左边的值
2、可以取地址的变量,相当于是一个容器,在内存中有分配好的地址
右值:
1、不可以取地址的值,在内存中没有分配地址,只是一个数值。
int a = 10;
int b = a;
此时的a是一个左值,可以取地址,b是一个左值,可以取地址。10是一个右值,它只代表一个数,没有内存地址。通过赋值操作以后,才会把10这个数放进int类型的容器a中。
左值引用: 引用的对象是一个左值,相当于是给变量取了一个别名。
右值引用: 引用的对象是一个右值。
int a = 10;
int b = a;
int &c = a;
int &&d = 10;
c是左值引用,因为a是一个左值。左值引用使用一个&
d是右值引用,因为10是一个右值。右值引用使用两个&&。