static c
Importancia y uso de estática en C ++ con ejemplos.
En nuestros temas anteriores sobre clases de almacenamiento, nos presentaron la palabra estática. Aprendimos sobre las variables estáticas que se declaran en un programa C ++. Sabemos que las variables estáticas se inicializan solo una vez y retienen el valor durante todo el programa.
De manera similar a las variables estáticas, en este tutorial, ampliaremos el uso de una palabra clave estática a:
- Variables miembro estáticas en una clase
- Objetos de clase estáticos
- Clase de métodos estáticos
=> Consulte los tutoriales de capacitación detallados de C ++ aquí.
Lo que vas a aprender:
- Variables de miembros estáticos en una clase
- Objetos de clase estática
- Métodos estáticos en una clase
- Propósito de las funciones estáticas
- Conclusión
- Lectura recomendada
Variables de miembros estáticos en una clase
Una variable estática nunca se asigna a una pila. Se les asigna espacio en diferentes almacenamientos estáticos. Esto significa que cuando declaramos una variable estática en una clase, esta variable es compartida por todos los objetos de esa clase.
Como las variables estáticas se inicializan solo una vez y son compartidas por todos los objetos de una clase, las variables estáticas nunca son inicializadas por un constructor. En su lugar, la variable estática debe inicializarse explícitamente fuera de la clase solo una vez utilizando el operador de resolución de alcance (: :).
Cuando se crea el primer objeto, todos los datos estáticos de tipo primitivo se inicializan a cero cuando no hay ninguna otra inicialización.
Consulte el siguiente ejemplo que demuestra la variable estática en una clase.
Como se muestra en el siguiente código, tenemos la variable estática count como miembro de la muestra de clase. Tenga en cuenta que hemos inicializado esta variable explícitamente fuera de la clase con el valor inicial = 0;
Luego incrementamos esta variable estática en el constructor de la clase.
Veamos un programa de ejemplo.
|_+_|Producción:
Cuenta = 0
Cuenta = 1
Cuenta = 2
En la función principal, creamos tres objetos diferentes. En la salida, vemos que el valor de la variable estática se mantiene entre las creaciones de objetos y no se restablece con cada creación de objetos. Esto para el primer objeto, cuenta = 0. Luego se incrementa a 1. Para el siguiente objeto, la cuenta = 1 y así sucesivamente.
Si el recuento fuera una variable ordinaria, el resultado habría sido:
Cuenta = 0
Cuenta = 0
Cuenta = 0
Objetos de clase estática
Al igual que las variables miembro estáticas de la clase, podemos declarar objetos de clase como estáticos. Los objetos de clase estáticos también se inicializan solo una vez y permanecen activos durante todo el programa. Como el objeto es un tipo definido por el usuario, un objeto de clase estática se inicializa de manera similar a los objetos ordinarios mediante un constructor.
Tomemos un ejemplo de programación para comprender mejor los objetos de clase estáticos.
|_+_|En este programa, tenemos una clase xyz con un constructor y un destructor. En la función principal, declaramos una variable x = 0; Si x es igual a cero, creamos un objeto estático de clase xyz.
El programa da la siguiente salida.
Producción:
Constructor :: xyz
Fin principal
Destructor :: xyz
Normalmente la salida debería haber sido
Constructor :: xyz
Destructor :: xyz
Fin principal
¿Qué tipo de pruebas te ayuda a cubrir el pepino?
Pero cuando creamos un objeto estático, este objeto tiene un alcance hasta el final del programa y no cuando el objeto sale del alcance (fin de la instrucción if). Esta es la razón por la cual el destructor del objeto obj se ejecuta solo después de que se alcanza el final de la función principal.
Métodos estáticos en una clase
También podemos tener métodos estáticos en una clase. Al igual que los objetos estáticos y las variables miembro estáticas, las funciones miembro estáticas también tienen alcance hasta que finaliza la ejecución del programa.
Cuando un método de clase se declara estático, solo puede acceder a miembros estáticos, es decir, variables estáticas y funciones estáticas de la clase. No puede acceder a miembros ordinarios de la clase.
Además, no hay un puntero 'this' disponible para los métodos de clase estáticos.
Se nos permite usar el objeto y el operador de punto para acceder a los métodos estáticos de una clase, pero se recomienda usar el nombre de la clase y el operador de resolución de alcance para acceder a estos métodos.
A continuación se muestra un ejemplo del uso de un método estático en una clase.
En este ejemplo, definimos dos variables miembro estáticas A y B, y un método estático printValues. Las variables A y B se inicializan a los valores 10 y 20 respectivamente. En el método estático printValues, los valores de A y B se someten a post Incremento y pre Incremento respectivamente. Después de eso, se imprimen los valores.
En el método principal, llamamos directamente al método estático printValues usando el nombre de la clase ya que no necesitamos ningún objeto para invocar las funciones estáticas.
|_+_|Producción:
Valor de A: 11
Valor de B: 21
La captura de pantalla del mismo resultado se muestra a continuación.
Entonces, en la salida, vemos que los valores de ambas variables estáticas se cambian según las operaciones realizadas en ellas.
Propósito de las funciones estáticas
Habiendo visto los diversos usos de la palabra clave static en este tutorial, queda una pregunta sobre cuál es el propósito de las funciones estáticas.
El propósito de las funciones estáticas se puede resumir de la siguiente manera:
- Usamos funciones estáticas cuando esa función no depende del objeto para invocar y trabajar.
- Otro propósito más del uso de la función estática es limitar su uso. A diferencia de las funciones globales, el acceso a las funciones estáticas está limitado al archivo en el que están ubicadas. Por lo tanto, para limitar el acceso a la función, lo hacemos estático.
- Aparte de las dos razones anteriores, usamos funciones estáticas cuando no queremos crear un objeto de una clase solo para ejecutar una función que no se refiere a ningún miembro de la clase.
Conclusión
Para concluir este tema, podemos decir que la palabra clave estática en C ++ se puede usar de varias formas para declarar variables, variables miembro, objetos de clase, métodos, etc.
No es necesario acceder a las funciones y variables de miembros estáticos con el objeto, sino que se puede acceder a ellas directamente utilizando el nombre de la clase. Además, el alcance de las entidades estáticas permanece durante toda la ejecución del programa. Por lo tanto, la palabra clave estática también se puede usar para controlar el acceso de una entidad en particular.
En nuestros próximos tutoriales, aprenderemos más sobre varios otros temas de programación orientada a objetos en C ++.
=> Consulte aquí para ver los tutoriales de capacitación de la A a la Z de C ++ aquí.
Lectura recomendada
- Burlarse de métodos privados, estáticos y vacíos usando Mockito
- Pruebas estáticas y pruebas dinámicas: diferencia entre estas dos importantes técnicas de prueba
- TOP 40 herramientas de análisis de código estático (las mejores herramientas de análisis de código fuente)
- La mejor serie de tutoriales de C # GRATIS: la guía definitiva de C # para principiantes
- Parametrización de valores estáticos en LoadRunner
- Variables de Python
- Tipos de herencia en C ++
- Variables en C ++