C++入門書によると
各ローカル静的変数は、最初の実行がオブジェクトの定義を通過する前に初期化されます。関数が終了しても、ローカル統計は破棄されません。プログラムが終了すると、それらは破棄されます。
ローカル静的変数はグローバル静的変数と何か違いがありますか?それ以外に、それらが宣言されている場所、他に何が違うのですか?
void foo () {
static int x = 0;
++x;
cout << x << endl;
}
int main (int argc, char const *argv[]) {
foo(); // 1
foo(); // 2
foo(); // 3
return 0;
}
と比べて
static int x = 0;
void foo () {
++x;
cout << x << endl;
}
int main (int argc, char const *argv[]) {
foo(); // 1
foo(); // 2
foo(); // 3
return 0;
}