在C/C++中大括号指明了变量的做用域,在大括号内声明的局部变量其做用域自变量声明始,到大括号以后终结。咱们应该善用它,使咱们的程序更加清晰明白。尤为是在有许多形式重复的代码的程序段中,如下是一个伪代码例子:ios
#include <iostream> #include <map> using namespace std; // 我只是偷懒不要打我 class Foo { public: ~Foo() { cout << "Foo destroyed" << endl; } int dat; }; int main() { map<int, Foo&> m; { Foo f; f.dat = 100; pair<int, Foo&> p(1, f); m.insert(p); } cout << m.at(1).dat << endl; } 若是没有大括号的约束,每一个临时变量都存在于函数做用域中,那么频繁增减流程时出错的几率大大增长了。放在大括号中,不只程序阅读起来很清楚,并且也不容易出错。f 的生存期是它所在的栈,因此它的生存期和 main 是同样的。f的做用域是所在的 block, 也就是它所声明最临近的 {} 之间。 f虽然不能在{}外访问,可是f的那块内存确确实实还在那儿,经过m进行读写是彻底没问题的.