Value categories

来自cppreference.com
< cpp‎ | language

 
 
C++语言

|- class="t-nv-h1" | colspan="5" | 一般主题 |- | |- |

预处理器
注释

|

|-

|- class="t-nv-h1" | colspan="5" | 流程控制 |-

条件执行语句

| |- |

|

|-

循环语句

| |- |

|

|-

跳转语句

| |- |

|

|-

|- class="t-nv-h1" | colspan="5" | 函数 |-

函数声明 Lambda函数声明 inline说明符 异常说明符 (已弃用) noexcept说明符 (C++11)

|- class="t-nv-h1" | colspan="5" | Exceptions |- | |- |

|

|-

|- class="t-nv-h1" | colspan="5" | 命名空间 |- | |- |

|

|-

|- class="t-nv-h1" | colspan="5" | 类型 |- | |- |

|

|-

说明符

| |- |

decltype (C++11)
auto (C++11)
alignas (C++11)

|

|-

存储持续期说明符 Initialization

| |- |

|

|-

|- class="t-nv-h1" | colspan="5" | 表达式 |- | |- |

值类别
求值顺序

|

|-

替代表示 字面量 布尔型 - 整型 - 浮点型 字符型 - 字符串 - nullptr (C++11) 用户定义 (C++11)

|- class="t-nv-h1" | colspan="5" | Utilities |-

属性 (C++11) Types typedef声明 类型别名声明 (C++11) Casts 隐式类型转换 - 显示类型转换 static_cast - dynamic_cast const_cast - reinterpret_cast 内存分配

| |- |

|

|-

|- class="t-nv-h1" | colspan="5" | 类 |- | |- |

|

|-

类特有的函数属性

| |- |

|

explicit (C++11)
static

|-

静态成员函数

| |- |

|

|- |- class="t-nv-h1" | colspan="5" | 模板 |- | |- |

|

|- |- class="t-nv-h1" | colspan="5" | 杂项 |- | |- |

|

|-

 

当一个C + +表达式(操作符与它的参数)进行评估,其结果是一些非引用类型的值。每个表达式属于主要值类别的其中一个.

目录

[编辑] 主要类别

[编辑] 左值

“左值”是一个表达式,用于标识一个非临时对象或一个非成员函数.
原文:
An lvalue is an expression that identifies a non-temporary object or a non-member function.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
下面的表达式是左值
原文:
The following expressions are lvalues:
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
属性
原文:
Properties:
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

[编辑] 右值NJ/ prvalueNJ

A“prvalue”是一个表达式,用于标识一个临时对象(或子对象除外),或不与任何对象关联的值.
原文:
A prvalue is an expression that identifies a temporary object (or a subobject thereof) or is a value not associated with any object.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
下面的表达式prvalues​​
原文:
The following expressions are prvalues:
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
属性
原文:
Properties:
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

[编辑] xvalueNJ

一个 xvalue“,用于标识一个”届满“对象的,即,从可移动的对象,该对象是一个表达式。可能是一个无名的临时标识的对象由一个xvalue的表达,它可能是一个命名对象,范围,或任何其他类型的对象,但如果作为函数的参数,xvalue将始终绑定到右值引用过载,如果有的话.
原文:
An xvalue is an expression that identifies an "expiring" object, that is, the object that may be moved from. The object identified by an xvalue expression may be a nameless temporary, it may be a named object in scope, or any other kind of object, but if used as a function argument, xvalue will always bind to the rvalue reference overload if available.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
只有以下的表达式是xvalues​​:
原文:
Only the following expressions are xvalues:
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
属性
原文:
Properties:
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
像prvalues​​,xvalues​​绑定到右值引用,,但不像prvalues​​,值为xValue,可能是多态的,非类值为xValue可能是合格的CV-.
原文:
Like prvalues, xvalues bind to rvalue references, but unlike prvalues, an xvalue may be polymorphic, and a non-class xvalue may be cv-qualified.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

[编辑] 混合类

[编辑] glvalueNJ

一个glvalue是一个表达式,它是一个左值,或一个xvalue的.
原文:
A glvalue is an expression that is either an lvalue or an xvalue.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
属性
原文:
Properties:
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

[编辑] 右值NJ

右边的值可以是一个表达式,它可以是一个prvalue或值为xValue.
原文:
An rvalue is an expression that is either a prvalue or an xvalue.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
属性(注意,这些适用于都的xvalues​​和prvalues​​,这意味着它们适用于前C + +11的右值以及)
原文:
Properties (note, these apply to both xvalues and prvalues, which means they apply to the pre-C++11 rvalues as well)
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

[编辑] 特殊类别

[编辑] 的成员函数调用之前

表达obj.*mfpptr->*mfp地方mfp是一个指向成员函数的指针,分类prvalue的表达,但他们可以不被使用,以初始化引用,作为函数的参数,或为任何目的,在所有,除非在左侧的参数的函数,调用表达式,例如: (pobj->*ptr)(args).
原文:
The expressions obj.*mfp and ptr->*mfp where mfp is a pointer to member function, are classified as prvalue expressions, but they cannot be used to initialize references, as function arguments, or for any purpose at all, except as the left-hand argument of a function call expression, e.g. (pobj->*ptr)(args).
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

[编辑] 无效的表达

函数调用表达式返回void,投的表达式来void,和扔表达式被列为prvalue的表达,但它们不能被用来初始化引用或作为函数的参数。它们可以被用来在一个废弃价值的情况下(例如,在一个属于自己的行,左边的参数的逗号操作符等),并在return声明一个函数返回void。抛出表达式(但并非其他的空隙prvalues​​)此外,也可以使用作为第二个和第三个操作数的条件运算符?.
原文:
Function call expressions returning void, cast expressions to void, and throw-expressions are classified as prvalue expressions, but they cannot be used to initialize references or as function arguments. They can be used in a discarded-value context (e.g. on a line of its own, as the left argument of the comma operator, etc) and in the return statement in a function returning void. In addition, throw-expressions (but not other void prvalues) may be used as the second and the third operands of the 条件运算符?.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
来自“http://zh.cppreference.com/mwiki/index.php?title=cpp/language/value_category&oldid=38853