C++中没有关键字的语句块

Statement blocks without a keyword in C++

本文关键字:语句 关键字 C++      更新时间:2023-10-16

可能重复:
C++中带括号的作用域

我正在处理v8javascript引擎,为我所在大学的新生开发一个学习环境,我将着手开发:

d8.cc:309

char* input = NULL;
{  // Release lock for blocking input.
  Unlocker unlock(isolate);
  input = fgets(buffer, kBufferSize, stdin);
}
  1. 它叫什么名字
  2. 我如何在其他情况下使用它
  3. 在c++中只有公平吗

就语言标准而言,整体结构(即未命名的块(被称为复合语句。它有助于引入一个新的范围。

在C++中,通常有两种用途:

  1. 将局部变量限制在代码的特定部分;其目的是最大限度地减少范围"污染",并使代码的读者更容易阅读。(这在其他语言中也可以实现,比如C和Java。(

  2. 严格控制对象/资源的生存期,因为作用域局部变量的析构函数将在作用域结束时自动调用。这可以用于一些聪明的事情,例如自动关闭文件句柄、释放互斥体等等。因此,你可能会听到人们谈论例如范围的互斥体。(C和Java没有析构函数,所以这个概念无法转换。(

它没有名字,它是一个代码块。大括号为由Unlocker控制的锁设置了明确的生存期。

这在C和C++中是一种非常有效的技术。它在C++中更可能出现,其中RAII用于限制对象的生存期并提供及时的资源释放(如锁(,尽管在C中让读者清楚地了解变量的生存期非常有用。