С++ Primer говорит
Каждая локальная статическая переменная инициализируется до первого раза выполнение проходит через определение объекта. Локальная статика не разрушается, когда функция заканчивается; они уничтожаются, когда программа завершается.
Являются ли локальные статические переменные отличными от глобальных статических переменных? Другое место, где они объявлены, что еще не так?
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;
}