effective c++条款04_2

全局变量尽量少使
比如
我在一个文件中定义a=10,在另一个模块中定义b=a
此时你一定认为b=10
但是这里很可能不是10,因为不同模块的全局变量初始化是不确定的
有可能b先被初始化,那么b就是一个不确定的值了
所以,为了解决这个问题
我们需要在函数中使用局部静态变量
int get_a()
{
static int a = 10;
return a;
}
int get_b()
{
static int b = get_a();
return b;
}
通过这个方法,无论get_a()和get_b()是否在同一个文件中,get_b()总能返回正确的结果,原因在于,函数内部的静态变量是在第一次访问的时候来初始化。

以此类推,如果是自定义类型的全局变量,只需在函数的返回类型上加上&,表示返回静态变量的引用

猜你喜欢

转载自blog.csdn.net/baidu_25539425/article/details/79883386