Contenu du cours
Programmation Orientée Objet en C++
Programmation Orientée Objet en C++
Membres Statiques de la Classe
En programmation orientée objet, le mot-clé static
revêt une signification particulière, modifiant le comportement des attributs et des méthodes. Il existe parfois des situations où certaines données doivent être partagées entre tous les objets d'une classe plutôt que d'être dupliquées pour chaque instance. C'est là qu'interviennent les membres de données statiques.
Syntaxe des membres statiques
La création d'un membre statique d'une classe est simple. Il suffit de faire précéder la déclaration du mot-clé static
.
Example.h
class Example { public: static int static_attibute; static void static_method() { std::cout << "Static method!" << std::endl; } };
Dans l'exemple ci-dessus, static_attribute
et static_method()
sont déclarés comme membres de données statiques de la class Example
. Contrairement aux membres de données ordinaires, les membres statiques sont associés à la classe elle-même plutôt qu'à des objets individuels. Cela signifie que toutes les instances de Example
partagent les mêmes membres statiques.
L'initialisation est essentielle pour les membres de données statiques, et elle doit être effectuée en dehors de la classe à moins que le membre n'utilise également le mot-clé 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;
Avantages de l'utilisation des membres statiques
L'utilisation des membres de données statiques et des fonctions membres statiques offre plusieurs avantages.
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 }
Merci pour vos commentaires !