2016-01-06 103 views
-2

兩個塊我有以下類型的功能。我對這是什麼樣的聲明感到困惑?我只習慣於傳統類型(可能被稱爲別的東西),在函數聲明後我有一塊代碼。但是這裏有兩個。你能告訴我這會做什麼?試圖瞭解C++函數的代碼

static void afunction(atype *atype) 
{ 
    { 

     //Do stuff 

    } 

    { 
     //Do stuff 
    } 
} 
+0

韋思這個程序能標誌。 – jiggunjer

+0

見http://stackoverflow.com/questions/5072845/scope-with-brackets-in-c – kfx

回答

4

這些區塊內聲明的所有變量將被視爲本地到該塊,和他們的析構函數(如有)將離開該塊時被調用。

這可以用於「隱藏」的變量,或調用構造/析構在該塊中。

例如,定時一個塊的執行,則可以初始化類,其中的構造設置一個起始時間的變量,和析構函數獲取結束時間和caculates的持續時間。

這也以相同的方式爲鎖定使用。在塊的末尾,無論您如何以及在哪裏退出該塊,鎖都會被釋放(析構函數將被調用)。