2016-01-06 69 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的持续时间。

这也以相同的方式为锁定使用。在块的末尾,无论您如何以及在哪里退出该块,锁都会被释放(析构函数将被调用)。