在 C++ 中,左值(lvalue) 和 右值(rvalue) 是表达式的基本属性,它们决定了表达式能否被赋值、取地址等操作。
1. 核心定义
左值(lvalue)
- 特点:表示一个具名的、持久的对象,可位于赋值语句左侧。
- 示例:
int x = 42; // x是左值 x = 100; // 合法:左值可被赋值 int* p = &x; // 合法:左值可取地址
右值(rvalue)
- 特点:表示一个临时的、即将销毁的对象,只能位于赋值语句右侧。
- 示例:
int y = x + 1; // x+1是右值(临时表达式) 100 = y; // 非法:右值不可被赋值 int* q = &(x+1); // 非法:右值不可取地址
2. 进一步分类
C++11 引入了右值引用后,右值进一步分为:
- 纯右值(prvalue):传统意义上的右值,如字面量、临时对象。
42; // 纯右值 std::string("hello"); // 纯右值(临时对象) - 将亡值(xvalue):通过
std::move()或static_cast<T&a
1706



被折叠的 条评论
为什么被折叠?



