c++ 11表达式中变量的类型
C++11 type of variable in expression?
在c++ 11中,我对T
和reference to T
类型之间的差异有些困惑,因为它们适用于命名变量的表达式。具体考虑:
int main()
{
int x = 42;
int& y = x;
x; // (1)
y; // (2)
}
上式(1)中表达x
的类型是什么?是int
还是lvalue reference to int
?(它的值类别显然是lvalue
,但这与其类型是分开的)
同样,表达式y
at(2)的类型是什么?是int
还是lvalue reference to int
?
在5.1.1.8中说:
[标识符主表达式]的类型是标识符的类型。结果是标识符表示的实体。如果实体是函数、变量或数据成员,则结果为左值,否则为右值。
你缺少的是这个(§5/5):
如果表达式最初的类型是" reference to
T
"(8.3.2, 8.5.3),则在进行进一步分析之前将该类型调整为T
。
所以尽管标识符y
的类型是int&
,表达式y
的类型是int
。表达式从来没有引用类型,所以两个表达式的类型都是int
。
表达式表示类型为int
的左值。表达式不能是引用,尽管可以用左值或右值引用绑定表达式的结果。
相关文章:
- 从模板创建通用打印函数,以打印基元数据类型变量的值
- 指针数据类型变量如何包含对象?
- 将 static_cast<int>(-15) 分配给静态常量字符类型变量
- 将内置类型变量传递给只有一个类类型参数的"+"运算符函数时自动类型转换的构造函数
- 如何为结构类型变量赋值
- 如何将字符类型变量附加到字符串中?
- 共享或私有 openmp 代码中的结构化类型变量
- 有没有办法在 c++ 中制作类型变量?
- 从其他类声明类类型变量会给出 C2143 错误(在"*"之前缺少";")
- 如何检查类中定义的枚举类型变量是否被分配给?
- 将子类实例保存在父类型变量中并通过父变量使用 Child 函数?
- 是否可以在没有结构的情况下创建新的类型变量?
- 为什么类型变量;不调用默认 CTR
- 如何使用CIN将输入整数值获取到char类型变量中
- 如何为 char** 类型变量提供适当的值,以便将其分配给字符串变量
- 在C++标准中哪里说必须初始化 const 内置类型变量的定义
- 为什么可以将其他类型变量用作C 中常量参考参数参数的参数
- Eclipse CDT 打开声明的自动类型变量
- 如何计算长长类型变量中的位数
- 将自动类型变量初始化为零.这种类型安全吗?