c++ - usar - variable static java
Uso de variables estáticas y funciones en ámbito global. (3)
¿Existe un uso para marcar una variable como static
, cuando se encuentra en el alcance global de un archivo .cpp, no en una función?
¿Puedes usar la palabra clave estática para funciones también? Si es así, ¿para qué sirven?
En este caso, la palabra clave estática significa que la función o variable solo puede ser utilizada por el código en el mismo archivo cpp. El símbolo asociado no se exportará y no podrá ser utilizado por otros módulos.
Esta es una buena práctica para evitar la coincidencia de nombres en software grande cuando sabe que sus funciones o variables globales no son necesarias en otros módulos.
Sí, si desea declarar una variable de alcance de archivo, entonces static
palabra clave static
es necesaria. static
variables static
declaradas en una unidad de traducción no pueden ser referidas desde otra unidad de traducción.
Por cierto, el uso de palabras clave static
está en desuso en C ++ 03.
La sección $ 7.3.1.1 / 2 del Estándar C ++ (2003) lee,
El uso de la palabra clave estática está en desuso cuando se declaran objetos en un ámbito de espacio de nombres; El espacio de nombres sin nombre proporciona una alternativa superior.
C ++ prefiere el espacio de nombres sin nombre sobre static
palabra clave static
. Vea este tema:
¿Superioridad del espacio de nombres sin nombre sobre la estática?
Tomando como ejemplo -
// At global scope
int globalVar; // Equivalent to static int globalVar;
// They share the same scope
// Static variables are guaranteed to be initialized to zero even though
// you don''t explicitly initialize them.
// At function/local scope
void foo()
{
static int staticVar ; // staticVar retains it''s value during various function
// function calls to foo();
}
Ambos dejan de existir solo cuando el programa termina / sale.