【发布时间】:2010-11-24 21:00:21
【问题描述】:
在尝试了 Perl 和一点点 C 之后,我正在尝试学习 C++,但我已经被细节和陷阱所困扰。考虑一下:-
int x = 1;
{
int x = x; // garbage value of x
}
int const arr = 3;
{
int arr[arr]; // i am told this is perfectly valid and declares an array of 3 ints !!
}
咦,为什么不一样?
澄清:使用同名在一种情况下有效,在另一种情况下无效。
【问题讨论】:
-
你能澄清你的问题吗?你指的是哪个区别?
-
我在尝试像 int x = x 这样简单的东西时使用相同的名称,它是无效的,我尝试对像 int arr[arr] 这样的复杂构造它是有效的。让我很困惑。
-
也许这很明显,但是无论上面的代码对编译器是否有意义,人类都很难理解,所以你不太可能在现有代码中看到它并且不明智地把它变成你自己的。
标签: c++ declaration semantics