C++ Primer dicevariables estáticas locales y globales en C++
Cada variable estática local se inicia antes de la primera vez la ejecución pasa a través de la definición del objeto. Las estáticas locales son no destruidas cuando termina una función; se destruyen cuando finaliza el programa .
¿Las variables locales estáticas son diferentes de las variables estáticas globales? Aparte del lugar donde están declarados, ¿qué más es diferente?
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;
}
comparar 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;
}
Puede garantizar el orden de destrucción con un poco de trabajo. http://stackoverflow.com/a/335746/14065 –