左值-右值-将亡值

左值-右值-将亡值

💡 原文中文,约2300字,阅读约需6分钟。
📝

内容提要

本文讨论了如何确定一个值是左值还是右值。通过代码示例和汇编分析,说明了在内存中,任何值都可以认为是左值。对于在代码段中的值,编译器会将其拷贝到栈空间,并赋给具体的对象,这个拷贝过来的值既具有右值的特点,又具有左值的特点,被称为"将亡值"。将亡值是一种临时存在的变量,编译器通常会限制对其进行左值引用的方式。

🎯

关键要点

  • 如何确定一个值是左值还是右值:有地址的值是左值,没有地址的值是右值。
  • 代码示例显示,变量 c 作为右值引用,实际上可以被当作左值使用。
  • 通过汇编分析,引用在内存中仍然使用指针来解决,变量 b 和 c 实际上是指向地址的指针。
  • 任何值在内存中都可以被认为是左值,因为存在地址。
  • 编译器会将代码段中的值拷贝到栈空间,形成一种临时存在的变量,称为将亡值(xvalue)。
  • 将亡值是一种中间变量,具有左值和右值的特点,但编译器限制对其进行左值引用。
➡️

继续阅读