对于这个过于简单的问题,我深表歉意,但我似乎无法在我正在阅读的书中找出这个例子:
void f5()
{
int x;
{
int y;
}
}
大括号周围int y
有什么用?你能把牙套放在你想放的任何地方吗?如果是这样,您何时以及为什么要这样做,或者这只是书中的一个错误?
对于这个过于简单的问题,我深表歉意,但我似乎无法在我正在阅读的书中找出这个例子:
void f5()
{
int x;
{
int y;
}
}
大括号周围int y
有什么用?你能把牙套放在你想放的任何地方吗?如果是这样,您何时以及为什么要这样做,或者这只是书中的一个错误?
像这样的大括号表明大括号内的代码现在处于不同的范围内。如果你试图在大括号之外访问 y,你会收到一个错误。
这是范围变量的问题,例如:
void f5()
{
int x = 1;
{
int y = 3;
y = y + x; // works
x = x + y; // works
}
y = y + x; // fails
x = x + y; // fails
}
它正在定义范围。变量 Y 在大括号之外是不可访问的。
大括号表示范围,变量 x 将在内大括号的范围内可见,但 y 在其大括号范围之外不可见。
大括号定义范围级别。在大括号之外,y
将不可用。
在作用域出口处,内部对象被破坏。例如,您可以将一个临界区括在大括号中并在那里构造一个锁定对象。然后您不必担心忘记解锁它 - 退出范围时会自动调用析构函数 - 无论是正常情况还是由于异常。
这看起来像一个错误(不知道上下文)
这样做你已经将值 y 装在这些大括号内,因此在它之外不可用。
当然,如果他们试图解释范围,那可能是有效的代码