在C ++中,什么是右值,左值,x值,glvalue和prvalue?

  • 左值具有程序可以访问的地址。左值表达式的示例包括变量名称,包括const变量,数组元素,返回左值引用的函数调用,位字段,并集和类成员。

  •  xvalue表达式没有地址,但可用于初始化右值引用,该引用提供对表达式的访问。示例包括返回右值引用的函数调用,数组下标等。

  •  glvalue(“广义”左值)是左值或x值。

  •  一个右值(在历史上,因为右值可能出现在赋值表达式的右侧,所以被称为历史值)是一个x值,其临时对象或子对象或与对象不相关的值。

  •  prvalue表达式没有程序可访问的地址。prvalue表达式的示例包括文字,返回非引用类型的函数调用