#include
using namespace std;
int&& value = 520;
class Test
{
public:
Test()
{
cout << "construct: my name is jerry" << endl;
}
Test(const Test& a)
{
cout << "copy construct: my name is tom" << endl;
}
};
Test getObj()
{
return Test();
}
int main()
{
int t1;
int&& t2 = t1; // error a1是左值,不能将左值赋值给右值
Test& t3 = getObj(); // error getObj放的临时对象被称为将王值,不能将右值给普通的左值引用赋值
Test& t4 = 1; // error 引用必须绑定到一个具有持久性的对象,不能将引用绑定到字面值或临时值。
Test t5 = getObj(); // ok 正常的赋值操作
Test&& t6 = getObj(); // ok getObj返回将亡值,t6是它的右值引用
int&& t7 = 1; // ok 正常的右值引用
const Test& t8 = getObj(); // ok常量左值引用是一个万能引用类型,他可以接受左值,右值,常量左值,常量右值。
return 0;
}