Escolar Documentos
Profissional Documentos
Cultura Documentos
BUSCAR EN EL BLOG
Como usar static en C y C++
5 diciembre 2010 in C++ | Tags: C, C++, static
Search
Introducción
SUSCRIPCIÓN
Igual como la palabra clave const, el modificador static trae confusiones
Escribe tu dirección de correo porque se puede utilizar en varios contextos en C y C++. Podemos declarar
electrónico para suscribirte a estáticas funciones y métodos. Variables pueden estar estáticas dentro de
este blog, y recibir
notificaciones de nuevos funciones, métodos, clases y a nivel global, es decir, por todas partes.
mensajes por correo.
Variables estáticas locales
Únete a otros 51 seguidores
Lo más común es declarar una variable local estática:
Introduce tu email void mi_funcion_o_metodo(void)
{
Regístrame static int var_estatica = 4;
}
CONTACTAR AUTOR
El valor de la variable var_estatica no se pierde aunque ya no se
Envía un mensaje al autor encuentre dentro del alcance, es decir, cuando el programa haya salido de la
función en que la variable fue definida. Esto diferencia una variable estática de
POSTS MÁS VISTOS una variable no estática, cuyo valor se pierde al final de la función.
Cómo usar #include en C y C++ Debido a esta diferencia, las variables estaticas no se guardan en el stack sino
Como usar static en C y C++ en una memoria especial para variables estáticas. Aunque no sean accesibles
Como usar const en C++ durante toda la ejecución del programa, las variables estáticas existen
durante toda la ejecución del programa.
Centrado de tablas en HTML
Tooltips en HTML Igual como en el caso de las variables convencionales, se llama al constructor
Diccionario de verbos de las variables estáticas cuando se construyen. Esto succede una vez antes
Programación orientado a de llamar a la función main. Igualmente se llama una vez al destructor después
objetos en C de salir del programa. Recuerda que las variables estáticas existen durante toda
Punteros a funciones la ejecución del programa. Por eso deben inicalizarse antes de entrar y después
de salir de la función principal.
Obtener un múltiple SELECT en
PHP
No hay diferencia entre variables estáticas en funciones y métodos de clases. De
Conexión a una base de datos hecho, una variable estática se puede definir dentro de cualquier bloque
Firebird desde PHP
delimitado por {}.
Privacy & Cookies: This site uses cookies. By continuing to use this website, you agree to their use.
ÚLTIMAS ENTRADAS Cerrar y aceptar
Miembros
To find out more, including how to estáticos
control cookies, de una
see here: clase
Cookie Policy Seguir
Para qué sirve volatile en C++
Variables miembros de una clase también pueden ser estáticas. Una variable
Para qué sirve mutable en C++
estática de una clase es un dato común a todas las instancias de esta
Cast y conversión de tipos clase y accesible en todos los métodos. Una variable miembro estática es
en C++
incluso accesible sin instancia alguna.
Como esconder datos con git
Declaración de no privacidad En el código siguiente definimos una clase con una variable miembro estática:
Conceptos (4) Si la queremos usar sin instancia, entonces usamos el nombre cualificado:
Documentación (6)
void haz_algo(void)
HTML (3) {
Humor y desperación (10) MiClase::miVariable = 3;
}
Java (2)
Optimización de programas (6) Lógicamente, la variable miembro debe ser pública para que la podamos usar
Organiziación de trabajo (9) fuera de los métodos de la clase. (Dentro de los métodos de la clase no hace
falta poner el nombre de la clase delante.)
PHP (5)
Programas por placer (2) Las variables miembros estáticas existen también durante toda la ejecución del
Seguridad informática (7) programa. Su diferencia con las variables estáticas definidas en una función o
Sobre este blog (3) método está en su alcance: Las variables miembros están al alcance de todos los
métodos de una clase y no sólo de uno.
Trampas (3)
Trucos (26) Constantes estáticas
Variables estáticas se pueden declarar también const. Una constante estática
#define acentos ampliar STL
es una constante universal del programa, pero de alcance limitado. Es una
array multidimensional backup
buena práctica utilizar constantes estáticas en lugar de macros #define ya que
base de datos C
C++ Ciencia científico
las constantes llevan un tipo: un 5 puede ser un int, un char o un float pero
un dato
comentarios const
const-correctness constantes const static int var = 5;
en C const_iterator contenedor
contraseña control de siempre es un int.
versiones crear proyectos
css código abierto Deque Métodos estáticos
documentación Métodos de clases también pueden ser estáticas. Declarar un método estático
donación de tiempo de cálculo
es una promesa que este método sólo utiliza miembros estáticos de la
doxygen empleo enum
estilo de clase. Este tipo de método no conoce el puntero this, por lo cual no se puede
1 void una_funcion_cualquiera(void)
DICIEMBRE 2010
2 {
3 // Correcto: Se puede llamar a un método no estático
L M X J V S D 4 // si instancia
1 2 3 4 5 5 MiClase::haz_algo();
6
6 7 8 9 10 11 12 7 // Sin embargo, también se le puede llamar con instancia
13 14 15 16 17 18 19 8 MiClase mi_instancia;
20 21 22 23 24 25 26 9 mi_instancia.haz_algo();
10
27 28 29 30 31 11 // No es posible llamar a un método convencional
« Nov Ene » 12 // sin instancia
13 MiClase::haz_otra_cosa(); // Error de compilación
SITOS DE INTERÉS
14 }
Biblioteca Boost Métodos estáticos son similares a funciones globales. Sólo llevan el nombre de la
clase como prefijo. (Un nombre de espacio no se usa de forma diferente que una
C++ FAQ
clase con todos los miembros públicos y estáticos.)
Doxygen
Macros predefinidos de Métodos estáticos pueden sobrecargar los nombres métodos no estático.
compiladores C/C++ De hecho es una práctica bastante común – sobre todo para métodos recursivos.
phpDocumentor Como ejemplo podemos considerar una clase String, en que un método
Regular Expressions – User convencional afecta a la instancia de una clase, mientras el método estático a un
guide parámetro.
Understand an Engineer 1 class String
www.cplusplus.com 2 {
3 public:
4
5 // Crea una instancia con todas las letras del parámetro
6 // convertidas a minúsculas.
7 static String a_minusculas(const String& instancia_de_string);
8
9 // Convierte todas las letras de ESTA instancia a minúsculas
10 void a_minusculas(void)
11 {
12 *this = a_minusculas(*this);
13 }
14 };
Enlace interno
Finalmente es posible declarar estáticos funciones y variables globales, es decir,
fuera de una función. Una variable a nivel global existe durante toda la ejecución
del programa sea estática o no. Y cualquier función tiene acceso a una variable
global. Por eso static tiene otro significado fuera de un bloque {}: especifica
que el identificador tiene enlace interno.
Enlace interno quiere decir, que el linker no puede usar este nombre para
enlazarlo con otro módulo. Es un nombre privado en el fichero de objeto (.o
o .obj). El contrario es un enlace externo: El fichero objeto expone este nombre
y su tipo al linker que puede usar esta información para enlazarlo con una
referencia en otro módulo.
Conclusión
Hemos visto que la palabra clave static se usa para declarar variables de un
alcance limitado pero con una vida durante toda la ejecución del programa.
Métodos estáticos se limitan a acceder a variables miembros estáticos de la
clase. Finalmente se usa el modificador static para forzar un enlace interno.
Como última nota cabe mencionar, que el uso de variables estáticas puede
complicar la creación de procesos multi-hilo, ya que estos datos son
comunes a todos los hilos.
Referencias
Como usar const en C++
Me gusta
RELA C I O NADO
9 comentarios
Comments feed for this article
Responder
RESPONDER
Search
Subscribe to feed.
Ben Eastaugh and Chris Sternal-Johnson.