[英]Can Someone Explain This Snippet (Why Are These Braces Here)?
我为这个过于简单化的问题道歉,但我似乎无法在我正在阅读的书中弄清楚这个例子:
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值,因此在它之外是不可用的。
当然,如果他们试图解释范围,那么这可能是一个有效的代码
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.