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()總能返回正確的結果,原因在於,函數內部的靜態變量是在第一次訪問的時候來初始化。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章