C++ Primer diceSu variabili statiche locali e globali in C++
Ogni variabile statica locale viene inizializzata prima della prima volta l'esecuzione passa attraverso la definizione dell'oggetto. Le statiche locali sono non distrutte quando termina una funzione; vengono distrutti quando termina il programma .
Le variabili statiche locali sono diverse dalle variabili statiche globali? Altro quindi il luogo in cui sono dichiarati, cos'altro è diverso?
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;
}
confrontare con
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;
}
È possibile garantire l'ordine di distruzione con un po 'di lavoro. http://stackoverflow.com/a/335746/14065 –