Voici un exemple de classe utilisant une donnée membre statique, nommée cmpt_obj, cette donnée nous permet de savoir à tout moment le nombre d'objets de la classe qui a été crée, pour cela lors de l'appel du constructeur la donnée membre satique nb_obj est incrémentée de 1 et lors de l'appel du destructeur elle est décrémenter de 1.
#include <iostream.h> class cmpt_obj { static int nb_obj; public: cmpt_obj(); //constructeur ~cmpt_obj(); //destructeur }; int cmpt_obj::nb_obj=0; //initialisation de la donnée membre statique cmpt_obj::cmpt_obj() { cout<<"++construction, il y a maintenant: " <<++nb_obj<<" objets\n"; } cmpt_obj::~cmpt_obj() { cout<<"--destruction, il reste maintenant: " <<--nb_obj<<"objets\n"; } void fct(); //déclaration d'une fonction void main() //programme principale { cmpt_obj a; fct(); //appel de fonction cmpt_obj b; } void fct() { cmpt_obj u,v; }
++construction, il y a maintenant: 1 objets //construction de l'objet a ++construction, il y a maintenant: 2 objets //construction de l'objet u dans la fontion fct() ++construction, il y a maintenant: 3 objets //construction de l'objet v dans la fontion fct() --destruction, il reste maintenant: 2 objets //destruction de l'objet v et u --destruction, il reste maintenant: 1 objets // lors de la sortie de la fonction ++construction, il y a maintenant: 2 objets //construction de l'objet b lors du retour au main --destruction, il reste maintenant 1 objets //destruction de l'objet b lors de la fin du main --destruction, il reste maintenant 0 objets //destruction de l'objet a lors de la fin du main