C++中没有关键字的语句块
Statement blocks without a keyword in C++
可能重复:
C++中带括号的作用域
我正在处理v8javascript引擎,为我所在大学的新生开发一个学习环境,我将着手开发:
d8.cc:309
char* input = NULL;
{ // Release lock for blocking input.
Unlocker unlock(isolate);
input = fgets(buffer, kBufferSize, stdin);
}
- 它叫什么名字
- 我如何在其他情况下使用它
- 在c++中只有公平吗
就语言标准而言,整体结构(即未命名的块(被称为复合语句。它有助于引入一个新的范围。
在C++中,通常有两种用途:
-
将局部变量限制在代码的特定部分;其目的是最大限度地减少范围"污染",并使代码的读者更容易阅读。(这在其他语言中也可以实现,比如C和Java。(
-
严格控制对象/资源的生存期,因为作用域局部变量的析构函数将在作用域结束时自动调用。这可以用于一些聪明的事情,例如自动关闭文件句柄、释放互斥体等等。因此,你可能会听到人们谈论例如范围的互斥体。(C和Java没有析构函数,所以这个概念无法转换。(
它没有名字,它是一个代码块。大括号为由Unlocker控制的锁设置了明确的生存期。
这在C和C++中是一种非常有效的技术。它在C++中更可能出现,其中RAII用于限制对象的生存期并提供及时的资源释放(如锁(,尽管在C中让读者清楚地了解变量的生存期非常有用。
相关文章:
- Visual Studio 2015:Extern "C" 和 "export" 关键字
- C++中的"inline"关键字
- 如何确保C++函数在定义之前声明(如override关键字)
- 我的简单if-else语句是如何无法访问的代码
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 线程,如果else语句,都是错误的上下文切换后,会发生什么
- 为什么是0;C++中的有效语句
- Insert函数不适用于2 if语句C++
- If语句未被求值C++
- C++嵌套if语句,基本货币交换
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 是否可以使用if constexpr删除控制流语句
- 无法理解此 return 语句的功能,没有它就会发生运行时错误
- 我似乎对if/else的基本语句有问题:/
- 当调用switch语句中的函数时(即使函数不包含循环),似乎是永不结束的循环的问题
- return语句中可以省略return关键字
- 如何制作自定义关键字语句
- 在switch语句中使用operator关键字
- 关键字之后"return"语句会被执行吗?
- C++中没有关键字的语句块