左值/右值、引用、复制与移动语义
💡
原文英文,约300词,阅读约需1分钟。
📝
内容提要
本文讨论了C++中的值类别,包括左值(lvalue)、右值(rvalue)、glvalue、prvalue和xvalue。左值表示可以持有值的内存位置,而右值则不具备此特性。文章强调了这些值在赋值操作中的定义和行为。
🎯
关键要点
- 本文讨论了C++中的值类别,包括左值、右值、glvalue、prvalue和xvalue。
- 左值表示可以持有值的内存位置,而右值则不具备此特性。
- 文章强调了这些值在赋值操作中的定义和行为。
- 左值是一个表达式,可能指向一个对象,且在评估时如果不指向对象则行为未定义。
- C标准并未明确规定右值的定义。
- 数组(没有使用[])标识内存位置但不是左值。
- 所有左值在赋值操作的右侧都是有效的,但反之则不然。
- C++中的值类别包括glvalue、prvalue、xvalue、lvalue和rvalue。
❓
延伸问答
什么是左值和右值的定义?
左值是可以持有值的内存位置,而右值则不具备此特性。
C++中有哪些值类别?
C++中的值类别包括左值(lvalue)、右值(rvalue)、glvalue、prvalue和xvalue。
左值在赋值操作中有什么特点?
所有左值在赋值操作的右侧都是有效的,但反之则不然。
C标准对右值的定义有什么不明确之处?
C标准并未明确规定右值的定义。
数组在值类别中是左值吗?
数组(没有使用[])标识内存位置但不是左值。
左值是否必须是可变的?
左值不必是可变的,例如const类型的左值也是有效的。
➡️