第一节 · 划分领地 · 命名空间
int main()
{
int x = 10; // x 是左值,10 是右值
int y = x + 1; // x + 1 是右值
// 左值:有名字,可以取地址
int* p = &x; // OK
// 右值:临时的,不可取地址
// int* p2 = &(x + 1); // 错误
return 0;
}int main()
{
int x = 10;
// 左值引用
int& lref = x;
// int& lref2 = 10; // 错误:不能绑定到右值
// const 左值引用可以绑定右值
const int& clref = 10; // OK
// 右值引用
int&& rref = 10; // OK
// int&& rref2 = x; // 错误:不能绑定到左值
// 右值引用本身是左值!
int&& rref3 = move(x); // 用 move 将左值转为右值
return 0;
}习题
Last updated