int a=10;
int b=5;
show(a);
show(a+b);
show(a++); //右值引用
show(++a); //左值引用
show(b+100);
show(100+200);
}
结果:
需要注意的是:
show(a++); //右值引用
show(++a); //左值引用
a++是先取出持久对象a的一份拷贝,再使持久对象a的值加1,最后返回那份拷贝,而那份拷贝是临时对象(不可以对其取地址),故其是右值;
++a则是使持久对象a的值加1,并返回那个持久对象a本身(可以对其取地址),故其是左值。
右值引用单独使用的情况很少,一般都是用于作为方法的参数或者函数的参数,使用的最多的情况则是用在移动语义之上。