On peut définir des données membres static
,
ces données sont partagées par tous les objets de
la classe (dans la terminologie smalltalk ce sont des variables
d'instances).
class X{ private: static int cmp; //... public: X(){cmp++;}; static int ncreat(){ return cmp; } ~X(){cmp--;} /... }; int X::cmp=0; // seule initialisation possibleA chaque création d'un objet de la classe
X
, le
constructeur X::X()
est appelé et
cmp
sera incrémenté, et à chaque destruction, le destructeur
~X()
est appelé et cmp
sera décrémenté.
Ainsi la fonction membre statique X::ncreat()
retournera le nombre d'objets de la classe X
en usage.
Une donnée membre statique
ne pourra (et devra)
être initialisée qu'à l'extérieur de la
déclaration de la classe.