gpt4 book ai didi

C++11 表达式中的变量类型?

转载 作者:太空狗 更新时间:2023-10-29 19:44:01 26 4
gpt4 key购买 nike

在 C++11 中,我对类型 Treference to T 之间的区别有些困惑,因为它们应用于命名变量的表达式。具体考虑:

int main()
{
int x = 42;
int& y = x;

x; // (1)
y; // (2)
}

上面(1)中的表达式x的类型是什么?是 int 还是 lvalue reference to int ? (它的值类别显然是一个左值,但这与其类型是分开的)

同样,上面 (2) 处的表达式 y 的类型是什么?是 int 还是 lvalue reference to int

5.1.1.8中说:

The type of [an identifier primary expression] is the type of the identifier. The result is the entity denoted by the identifier. The result is an lvalue if the entity is a function, variable, or data member and a prvalue otherwise.

最佳答案

您缺少的是这个 (§5/5):

If an expression initially has the type “reference to T” (8.3.2, 8.5.3), the type is adjusted to T prior to any further analysis.

因此,虽然标识符 y 的类型为 int&,但表达式 y 的类型为 int。表达式永远不会有引用类型,因此您的两个表达式的类型都是 int

关于C++11 表达式中的变量类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16567044/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com