天天看點

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()總能傳回正确的結果,原因在于,函數内部的靜态變量是在第一次通路的時候來初始化。

以此類推,如果是自定義類型的全局變量,隻需在函數的傳回類型上加上&,表示傳回靜态變量的引用