C++ Miembros estáticos de la clase
Podemos usarstaticla palabra clave para definir miembros de la clase como estáticos. Cuando declaramos un miembro de la clase como estático, esto significa que sin importar cuántos objetos de la clase se creen, el miembro estático tiene una sola copia.

Los miembros estáticos se comparten entre todos los objetos de la clase. Si no hay otras declaraciones de inicialización, cuando se crea el primer objeto, todos los datos estáticos se inicializan a cero. No podemos colocar la inicialización de miembros estáticos dentro de la definición de la clase, pero podemos hacerlo fuera de la clase usando el operador de resolución de ámbito::para redeclarar la variable estática e inicializarla, como se muestra en el siguiente ejemplo.
El siguiente ejemplo ayuda a entender mejor el concepto de datos miembros estáticos:
Ejemplo
Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:
Constructor called. Constructor called. Total objects: 2
Funciones miembro estáticas
Si se declara un miembro de función como estático, se puede independizar la función de cualquier objeto específico de la clase. Las funciones miembro estáticas se pueden invocar incluso cuando no existen objetos de la clase,Las funciones estáticassolo necesitan usar el nombre de la clase y el operador de resolución de ámbito::para poder acceder.
Las funciones miembro estáticas solo pueden acceder a datos miembros estáticos, otras funciones miembro estáticas y otras funciones fuera de la clase.
Las funciones miembro estáticas tienen un ámbito de clase; no pueden acceder al puntero `this` de la clase. Se pueden usar funciones miembro estáticas para determinar si ciertos objetos de la clase han sido creados.
Diferencias entre las funciones miembro estáticas y las funciones miembro normales:
- Las funciones miembro estáticas no tienen puntero `this` y solo pueden acceder a miembros estáticos (incluyendo variables miembro estáticas y funciones miembro estáticas).
- Las funciones miembro normales tienen puntero `this` y pueden acceder a cualquier miembro de la clase; mientras que las funciones miembro estáticas no tienen puntero `this`.
El siguiente ejemplo ayuda a entender mejor el concepto de funciones miembro estáticas:
Ejemplo
Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:
Inital Stage Count: 0 Constructor called. Constructor called. Final Stage Count: 2Otras extensiones
Clases y objetos en C++