天天看點

C++ 中多餘大括号的用處問題解釋

問題

今天看同僚代碼的時候見到了一種比較特殊的c++寫法。

bool test(){
	...
	\\ Some unrelated code
	{
		\\ Some other code
		... 
	}
	\\ Somce unrelated code
	...
}
           

在代碼中有一個多餘的大括号,但是不知道是做什麼用的,因為他不和前面或後面的任何代碼有關。

解釋

這個多餘的大括号提供了一個新的作用域。 加入這個多餘大括号的原因有兩個:

  1. 可以更幹淨的聲明新變量

    在C++中這個功能可能沒有那麼重要因為在C++中可以在任何位置定義新變量。但是這在C中是不行的,是以很多人還帶有寫C時的習慣,在每次添加新的變量的時候會寫一個多餘的大括号包住。

  2. 可以更快的釋放資源

    因為C++有析構器,當離開作用域的時候,多餘的大括号可以使資源(files, mutexes, whatever) 自動釋放。這使代碼變得更幹淨。這就意味着程式可以占用一些共享資源更短的時間。擁有自動儲存的變量在離開作用域後會自動銷毀,多餘的大括号可以使它比沒有時更早的被銷毀。

  3. 限制變量的作用域
    bool test(){
    	{
            int test;
            test = 0;
        }
        cout << test; // cause a compile error, not able to access test
    }
               

繼續閱讀