Você está na página 1de 1

Trucos informáticos

Informática en la vida real


Subscribe to feed Inicio Acerca del autor Lista de artículos

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:

CATEGORÍAS class MiClase


{
Aplicaciones de apoyo (11) public:
static int mi_variable;
Base de datos (5) };
C++ (23)
Esta variable se inicializa así:
C-Sharp (1)
Código bonito (13) int MiClase::mi_variable = 5;

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

programación hacer directamente referencia a métodos y variables no estátitocs de la clase.


Firebird FlameRobin 1 class MiClase
formas de trabajar 2 {
función git
funciones largas 3 public:
4 // Una variable estática
HTML HTML SELECT 5 static int una_variable_estatica;
humor informática en 6
la vida real informático 7 // Una variable no estática
instalar PHP
ingeniero insert 8 int una_variable_no_estatica;
9
InterBase internet Java 10 // Un método estático
javadoc Juegos licencia manual de 11 static void haz_algo(void)
referencia map matemático 12 {
memoria dinámica mundo laboral 13 // Se pueden usar variables estáticas
organización
operator++ 14
15
una_variable_estatica = 5;
del desarrollo 16 // Error: no se pueden usar variables que
organizar ficheros en 17 // requieren un puntero this
directorios palabra clave 18 una_variable_no_estatica = 5; // Error de compilación
performancia PHP 19 }
phpDocumentor PHP en 20
21 // Un método normal (no estático)
Windows post-fix pre-fix prefijo
22 void haz_otra_cosa(void)
mejor que postfijo
programación
23 {
24 // Se pueden usar variables y métodos estáticos
punteros Seguridad 25 // también en métodos no estáticos
26 una_variable_estatica = 5;
seguridad de datos 27 haz_algo();
Simulación numérica 28
software propietario 29 // Una variable de instancia en un método de instancia
STL title tooltip variable 30
31 }
una_variable_no_estatica = 5; // Correcto
velocidad de código 32 };
ARCHIVOS
Es posible llamar a métodos estáticos de una clase sin tener una instancia de ella
Elegir mes utilizando el nombre cualificado.

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.

El modificador static en una función o variable suprime el enlace externo. Se


puede forzar un enlace externo con el modificador extern. Por defecto,
funciones tienen un enlace externo y variables interno. Por eso no es necesario
declarar una función extern y una variable static, pero mejora la semántica
del código.

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

A un bloguero le gusta esto.

RELA C I O NADO

Punteros a funciones Como usar const en Programación


En "C++" C++ orientado a objetos
En "C++" en C
En "C++"

9 comentarios
Comments feed for this article

22 julio 2011 a 04:50 Bastante clara la explicacion, gracias


Pedro
Responder

24 julio 2011 a 17:39 Muchas gracias a ti por los ánimos.


trucosinformaticos Por favor, déjame saber si queda
alguna duda.

Responder

29 octubre 2011 a 10:36 gracias, esta bn explicado !! +10


alberto
Responder

30 octubre 2011 a 18:08 Gracias por los ánimos.


trucosinformaticos
Responder

3 octubre 2013 a 23:33 Gracias!!


Pablo
Responder

13 abril 2014 a 21:09 Excelente informacion!


Maxiro
Responder

19 abril 2014 a 19:35 Gracias.


trucosinformaticos
Responder

28 septiembre 2016 a 05:41 Excelente explicación. ¡Gracias!


Kevin
Responder

29 septiembre 2016 a 21:21 Gracias a ti por el piropo.


trucosinformaticos
Responder

RESPONDER

Introduce aquí tu comentario...

« Aprovechar código viejo Programación orientado a objetos en C »

Search

Subscribe to feed.
Ben Eastaugh and Chris Sternal-Johnson.

Você também pode gostar

  • Control de Datos de Procesamiento
    Control de Datos de Procesamiento
    Documento12 páginas
    Control de Datos de Procesamiento
    Sergio Michelotti
    50% (2)
  • 4
    4
    Documento7 páginas
    4
    SankHarHeysonBravo
    Ainda não há avaliações
  • 5
    5
    Documento2 páginas
    5
    SankHarHeysonBravo
    Ainda não há avaliações
  • 4
    4
    Documento7 páginas
    4
    SankHarHeysonBravo
    Ainda não há avaliações
  • 1
    1
    Documento1 página
    1
    SankHarHeysonBravo
    Ainda não há avaliações
  • 3
    3
    Documento2 páginas
    3
    SankHarHeysonBravo
    Ainda não há avaliações
  • 1
    1
    Documento1 página
    1
    SankHarHeysonBravo
    Ainda não há avaliações
  • 2
    2
    Documento3 páginas
    2
    SankHarHeysonBravo
    Ainda não há avaliações
  • 2
    2
    Documento3 páginas
    2
    SankHarHeysonBravo
    Ainda não há avaliações
  • 1
    1
    Documento2 páginas
    1
    SankHarHeysonBravo
    Ainda não há avaliações
  • 3
    3
    Documento2 páginas
    3
    SankHarHeysonBravo
    Ainda não há avaliações
  • 1
    1
    Documento2 páginas
    1
    SankHarHeysonBravo
    Ainda não há avaliações
  • 5
    5
    Documento2 páginas
    5
    SankHarHeysonBravo
    Ainda não há avaliações
  • 2
    2
    Documento2 páginas
    2
    SankHarHeysonBravo
    Ainda não há avaliações
  • 2
    2
    Documento2 páginas
    2
    SankHarHeysonBravo
    Ainda não há avaliações
  • 1 Subir
    1 Subir
    Documento2 páginas
    1 Subir
    SankHarHeysonBravo
    Ainda não há avaliações
  • 4 Subir
    4 Subir
    Documento1 página
    4 Subir
    SankHarHeysonBravo
    Ainda não há avaliações
  • Aplicación Tandem para aprender idiomas en tándem
    Aplicación Tandem para aprender idiomas en tándem
    Documento2 páginas
    Aplicación Tandem para aprender idiomas en tándem
    SankHarHeysonBravo
    Ainda não há avaliações
  • Fuzzy Logic Con Python
    Fuzzy Logic Con Python
    Documento17 páginas
    Fuzzy Logic Con Python
    SankHarHeysonBravo
    Ainda não há avaliações
  • 5 Subir
    5 Subir
    Documento1 página
    5 Subir
    SankHarHeysonBravo
    Ainda não há avaliações
  • 2 Subir
    2 Subir
    Documento3 páginas
    2 Subir
    SankHarHeysonBravo
    Ainda não há avaliações
  • 2 XD
    2 XD
    Documento1 página
    2 XD
    SankHarHeysonBravo
    Ainda não há avaliações
  • 4 XD
    4 XD
    Documento1 página
    4 XD
    SankHarHeysonBravo
    Ainda não há avaliações
  • 1 XD
    1 XD
    Documento1 página
    1 XD
    SankHarHeysonBravo
    Ainda não há avaliações
  • 1 XD
    1 XD
    Documento1 página
    1 XD
    SankHarHeysonBravo
    Ainda não há avaliações
  • 2 XD
    2 XD
    Documento1 página
    2 XD
    SankHarHeysonBravo
    Ainda não há avaliações
  • Tuo Estatuto Universitario
    Tuo Estatuto Universitario
    Documento148 páginas
    Tuo Estatuto Universitario
    Ash Man
    Ainda não há avaliações
  • 3 XD
    3 XD
    Documento1 página
    3 XD
    SankHarHeysonBravo
    Ainda não há avaliações
  • 3 XD
    3 XD
    Documento1 página
    3 XD
    SankHarHeysonBravo
    Ainda não há avaliações
  • 5 XD
    5 XD
    Documento1 página
    5 XD
    SankHarHeysonBravo
    Ainda não há avaliações
  • Tuo Estatuto Universitario 2016
    Tuo Estatuto Universitario 2016
    Documento160 páginas
    Tuo Estatuto Universitario 2016
    Christian Kelvin Manzano Catari
    Ainda não há avaliações
  • Tarea 12
    Tarea 12
    Documento2 páginas
    Tarea 12
    SebastianRamos
    Ainda não há avaliações
  • Ballestas PDF
    Ballestas PDF
    Documento158 páginas
    Ballestas PDF
    DennisMartinezLoaiza
    Ainda não há avaliações
  • Arquitectura Orientada A Servicios
    Arquitectura Orientada A Servicios
    Documento19 páginas
    Arquitectura Orientada A Servicios
    Eduardo Mauricio Campaña Ortega
    Ainda não há avaliações
  • Cuestionario 3
    Cuestionario 3
    Documento4 páginas
    Cuestionario 3
    Victor Daniel Rascon Marquez
    Ainda não há avaliações
  • JAVA Desde Cero PDF
    JAVA Desde Cero PDF
    Documento39 páginas
    JAVA Desde Cero PDF
    omateus
    Ainda não há avaliações
  • Ejercicios en Clase
    Ejercicios en Clase
    Documento156 páginas
    Ejercicios en Clase
    Nahum Romero
    Ainda não há avaliações
  • CoDejaVu - Ejemplo Modelo Vista Controlador
    CoDejaVu - Ejemplo Modelo Vista Controlador
    Documento27 páginas
    CoDejaVu - Ejemplo Modelo Vista Controlador
    ivan
    Ainda não há avaliações
  • Flujo en Programas
    Flujo en Programas
    Documento20 páginas
    Flujo en Programas
    Elias Cassal
    Ainda não há avaliações
  • Clase 6 Poo
    Clase 6 Poo
    Documento12 páginas
    Clase 6 Poo
    Geofredo Moreno
    Ainda não há avaliações
  • Arquitectura Logica Del Sistema
    Arquitectura Logica Del Sistema
    Documento11 páginas
    Arquitectura Logica Del Sistema
    Alvaro Daniel Hernandez Soto
    Ainda não há avaliações
  • Vectores de Objetos en Java
    Vectores de Objetos en Java
    Documento3 páginas
    Vectores de Objetos en Java
    Jävïër Jøsë
    Ainda não há avaliações
  • Diapositva C#
    Diapositva C#
    Documento12 páginas
    Diapositva C#
    Xavier Navia
    Ainda não há avaliações
  • POO
    POO
    Documento19 páginas
    POO
    César Alfredo Sánchez Beltrán
    Ainda não há avaliações
  • Java Desde Cero (Manual)
    Java Desde Cero (Manual)
    Documento91 páginas
    Java Desde Cero (Manual)
    Maritza Ruiz
    Ainda não há avaliações
  • Consideraciones Del Lenguaje PPL
    Consideraciones Del Lenguaje PPL
    Documento27 páginas
    Consideraciones Del Lenguaje PPL
    Meli Juver Palom Tlvp
    Ainda não há avaliações
  • Los DBMS
    Los DBMS
    Documento6 páginas
    Los DBMS
    Anonymous zpDjXKH3
    Ainda não há avaliações
  • Programación en Python
    Programación en Python
    Documento69 páginas
    Programación en Python
    GABRIELJ DLST
    100% (4)
  • Manual Programación Orientada A Objetos I (1892)
    Manual Programación Orientada A Objetos I (1892)
    Documento230 páginas
    Manual Programación Orientada A Objetos I (1892)
    randijunior segovia chacon
    Ainda não há avaliações
  • Actividad CRM Dayana Garcia
    Actividad CRM Dayana Garcia
    Documento11 páginas
    Actividad CRM Dayana Garcia
    Dayana Garcia
    Ainda não há avaliações
  • Tarea Academica 2
    Tarea Academica 2
    Documento8 páginas
    Tarea Academica 2
    Roger Rodriguez
    Ainda não há avaliações
  • Metodología OMT (Rumbaugh)
    Metodología OMT (Rumbaugh)
    Documento14 páginas
    Metodología OMT (Rumbaugh)
    Saul Rivera Castaño
    Ainda não há avaliações
  • Fundamentos de la POO en Java
    Fundamentos de la POO en Java
    Documento17 páginas
    Fundamentos de la POO en Java
    MARLON STIVEN ZUÑIGA RUEDA
    Ainda não há avaliações
  • Unidad 2 Metodologia
    Unidad 2 Metodologia
    Documento59 páginas
    Unidad 2 Metodologia
    Ann Varney Flowers
    Ainda não há avaliações
  • 03 Metodologías de Diseño para La Generación de Sistemas Orientados A Objetos
    03 Metodologías de Diseño para La Generación de Sistemas Orientados A Objetos
    Documento24 páginas
    03 Metodologías de Diseño para La Generación de Sistemas Orientados A Objetos
    Luis Alberto Chávez
    Ainda não há avaliações
  • Manual Tecnico
    Manual Tecnico
    Documento10 páginas
    Manual Tecnico
    fernando
    Ainda não há avaliações
  • Parte 1: Introducción Al Desarrollo de Aplicaciones Con Visual Basic
    Parte 1: Introducción Al Desarrollo de Aplicaciones Con Visual Basic
    Documento87 páginas
    Parte 1: Introducción Al Desarrollo de Aplicaciones Con Visual Basic
    Damian Salazar
    Ainda não há avaliações
  • Inv. Unidad 4 Cliente Servidor
    Inv. Unidad 4 Cliente Servidor
    Documento16 páginas
    Inv. Unidad 4 Cliente Servidor
    erick de jesus hernandez cruz
    Ainda não há avaliações
  • UML análisis diseño
    UML análisis diseño
    Documento8 páginas
    UML análisis diseño
    Daniel Llerena
    Ainda não há avaliações
  • 4.2 Clases Abstractas
    4.2 Clases Abstractas
    Documento18 páginas
    4.2 Clases Abstractas
    LUIS DANIEL TORRES ANAYA
    Ainda não há avaliações