Pas de dépendances
#include <iostream> class Test { protected: static int cpt; public: Test() {cpt++;} int GetCpt() const {return cpt;} }; int Test::cpt=0; int main() { Test a; Test b; std::cout << a.GetCpt() << " " << b.GetCpt() << std::endl; return 0; }
Une donnée membre static permet de gérer une variable commune à toutes les instances. Ici, cpt est commune à toutes les instances. Dans le main, je crée une instance a et b. Chaque constructeur incrémente la variable. Quand j'affiche la valeur, c'est bien entendu la même pour les deux instances, et c'est donc 2 ici. La précaution à prendre est l'initialisation de la variable static. En effet, elle a besoin d'être initialisée. Pour cela, on le fait hors classe, juste après, avec la syntaxe ci dessus.