C++ Primer sagtauf lokale und globale statische Variablen in C++
Jede lokale statische Variable vor dem ersten Mal initialisiert wird Ausführung der Definition des Objekts durchläuft. Lokale Statiken sind nicht zerstört, wenn eine Funktion endet; Sie werden zerstört, wenn das Programm beendet wird.
Sind lokale statische Variablen anders als globale statische Variablen? Anders als der Ort, an dem sie erklärt werden, was ist noch anders?
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;
}
Vergleichen mit
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;
}
Sie können die Reihenfolge der Zerstörung mit ein wenig Arbeit garantieren. http://stackoverflow.com/a/335746/14065 –