問題
今天看同僚代碼的時候見到了一種比較特殊的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 }