C++值类别

2020-04-30  本文已影响0人  delta1037

每个C++表达式(带有操作数的操作符、字面量、变量名等)可按照两种独立的特性加以辨别:类型值类别 (value category)。每个表达式都具有某种非引用类型,且每个表达式只属于三种基本值类别中的一种:纯右值 (prvalue)亡值 (xvalue)左值 (lvalue)

值类别关系图 - 图源参考文献2

一、左值

左值 (lvalue):如此称呼的历史原因是,左值可以出现于赋值表达式的左边
描述:能够用&取地址的表达式是左值表达式,从值类别关系图上可以看出来是非亡值的泛左值。
举例:

二、纯右值

纯右值 (prvalue):“纯 (pure)”的右值
描述:求值符合下列之一的表达式:

举例:

三、亡值

亡值 (xvalue):(“将亡 (expiring)”的值)是代表其资源能够被重新使用的对象或位域的泛左值

举例:

四、泛左值

泛左值 (glvalue):(“泛化 (generalized)”的左值)是其求值确定一个对象、位域或函数的个体的表达式

描述:泛左值包括左值和亡值

五、右值

右值 (rvalue):(如此称呼的历史原因是,右值可以出现于赋值表达式的右边)是纯右值或者亡值

描述:

六、参考文献

【1】zh.cppreference.com/w/cpp/language/value_category
【2】话说C++中的左值、纯右值、将亡值

上一篇 下一篇

猜你喜欢

热点阅读