问题
今天看同事代码的时候见到了一种比较特殊的c++写法。
bool test(){
...
\\ Some unrelated code
{
\\ Some other code
...
}
\\ Somce unrelated code
...
}
在代码中有一个多余的大括号,但是不知道是做什么用的,因为他不和前面或后面的任何代码有关。
解释
这个多余的大括号提供了一个新的作用域。 加入这个多余大括号的原因有两个:
- 可以更干净的声明新变量
在C++中这个功能可能没有那么重要因为在C++中可以在任何位置定义新变量。但是这在C中是不行的,所以很多人还带有写C时的习惯,在每次添加新的变量的时候会写一个多余的大括号包住。 - 可以更快的释放资源
因为C++有析构器,当离开作用域的时候,多余的大括号可以使资源(files, mutexes, whatever) 自动释放。这使代码变得更干净。这就意味着程序可以占用一些共享资源更短的时间。拥有自动储存的变量在离开作用域后会自动销毁,多余的大括号可以使它比没有时更早的被销毁。 - 限制变量的作用域
bool test(){ { int test; test = 0; } cout << test; // cause a compile error, not able to access test }