Contenido del Curso
POO en C++
POO en C++
Miembros Estáticos de la Clase
En la programación orientada a objetos, la palabra clave static
tiene un significado especial, ya que modifica el comportamiento de los atributos y métodos. Existen situaciones en las que es necesario que ciertos datos sean compartidos entre todos los objetos de una clase en lugar de replicarse para cada instancia. Aquí es donde entran en juego los miembros de datos estáticos.
Sintaxis de los miembros estáticos
Crear un miembro estático de una clase es sencillo. Solo es necesario anteponer la declaración con la palabra clave static
.
Example.h
class Example { public: static int static_attibute; static void static_method() { std::cout << "Static method!" << std::endl; } };
En el ejemplo anterior, static_attribute
y static_method()
se declaran como miembros de datos estáticos de la class Example
. A diferencia de los miembros de datos regulares, los miembros de datos estáticos están asociados con la clase en sí misma y no con los objetos individuales. Esto significa que todas las instancias de Example
comparten los mismos miembros estáticos.
La inicialización es fundamental para los miembros de datos estáticos y debe realizarse fuera de la clase, a menos que el miembro también utilice la palabra clave const
.
FirstExample.h
SecondExample.h
class Example { public: static int static_attribute; static void static_method() { std::cout << "Static method!" << std::endl; } }; int Example::static_attribute = 0;
Beneficios de usar miembros estáticos
El uso de miembros de datos estáticos y funciones miembro estáticas ofrece varios beneficios.
main.cpp
#include <iostream> class Example { public: static int static_attribute; static void static_method() { std::cout << "Static method!" << std::endl; } }; // Initialization of the static member variable int Example::static_attribute = 0; int main() { Example obj1, obj2; obj1.static_attribute = 100; // Modifying static_attribute through obj1 std::cout << obj1.static_attribute << std::endl; std::cout << obj2.static_attribute << std::endl; Example::static_attribute = 25; // Modifying static_attribute through class Example::static_method(); // Calling the static method through class }
¡Gracias por tus comentarios!