表达式
为了帮助确定表达式的计算方式以及它们的使用位置,C++ 中的所有表达式都有两个属性:类型和值类别。这里先简单记录一下,后续再更新(2025/2/19)
表达式的类型
表达式的类型也就是表达式生成的值、对象或函数的类型。编译器可以使用表达式的类型来确定表达式在给定上下文中是否有效。
表达式的类型必须在编译时确定(否则类型检查和类型推导将不起作用,但是,表达式的值可以在编译时(如果表达式是 constexpr)或运行时(如果表达式不是 constexpr)确定。
表达式的值类别
表达式的值类别指示编译器表达式是解析为某种类型的值、函数还是对象。
自从C++11起,现在有左值、右值、泛左值、纯右值、亡值,共五种类别。
左值表达式
左值是一种计算结果为标识对象或函数(或位字段)的表达式,具有标识的实体(如对象或函数)可以与其他类似实体区分开来,具有标识的实体可以通过标识符、引用或指针进行访问。是有持久存储的对象。它们的值可以被获取和修改,并且在表达式结束后依然存在。
左值有两种子类型:可修改的左值,不可修改的左值。
右值表达式
右值表达式的计算结果为一个值,是不可识别的(意味着它们必须立即使用),是没有持久存储的对象。它们是表达式的临时结果,通常会在表达式结束后被销毁。
左值与右值的区别
- 左值可以隐式转换为右值。这意味着左值可以在需要右值的任何位置使用。而右值不会隐式转换为左值。

浙公网安备 33010602011771号