1.区别
引用就是引用对象本身,这种情况下,绝对不要出现空指针问题,引用对象要存在,左值引用和右值引用都是引用,正如马克思主义描述物质和精神一样,左值引用和右值引用也是从区别来辨识的。右值引用是指一个临时对象,不与任何对象相联系的值。比如纯粹的数值1,2,3,......
2.例子
左值
string str = "abc";
string& s = str;
int a = 1;
int& c = a;
下面就是错误的
int& b = 8;
string& s1 = "hello world";
右值引用
int&& a = 3;
string&& str = "hello world";
3.左值和右值引用的作用
左值就不用说了,用的比较多,比如函数的返回值,为了减少拷贝,而使用引用,这里的引用一般是指左值。右值引用指的是移动的时候使用的函数,比如有一个对象A,它的移动赋值函数为:
A& operator(const A&& );
在临时对象需要被记录的时候,比如函数返回一个临时的对象,则需要用到右值引用了