Comment utiliser les membres statiques en C ++

En C ++, vous pouvez déclarer un membre à être partagée par tous les objets d'une classe en déclarant que membre statique. Un membre de données statiques en C ++ est celui qui a été déclaré à la statique classe de stockage, comme indiqué ici:

classe Étudiant {public: étudiants (char * pName = «sans nom»): Nom (pName) {noOfStudents ++ -} ~ Étudiant () {} noOfStudents --- static int nom noOfStudents-string -} - S2 étudiants s1-étudiants

Le membre de données noOfStudents fait partie de la classe Étudiant mais ne fait pas partie de l'une des s1 ou s2. Autrement dit, pour chaque objet de la classe Étudiant, il ya un séparée nom, mais il n'y a qu'un noOfStudents, qui toutes Élèves doivent partager.




“ Eh bien, ” tu demandes, “ si l'espace pour noOfStudents ne sont pas alloués à l'un des objets de la classe Étudiant, où est-il alloué ”?; La réponse est, “ Il ne ”. Vous devez allouer spécifiquement espace pour cela, comme suit:

int étudiants :: = 0- noOfStudents

Cette syntaxe un peu particulière prospectifs alloue de l'espace pour le membre de données statiques et est initialisée à 0. (Vous ne disposez pas d'initialiser un membre statique lorsque vous déclarez it- C ++ invoqueront le constructeur par défaut si vous ne le faites pas.) Les données statiques membres doit être globale - une variable statique ne peut pas être locale à une fonction.

Le nom de la classe est nécessaire pour tout membre quand il apparaît à l'extérieur de ses frontières de classe.

Cette entreprise d'allouer de l'espace est un peu déroutant manuellement jusqu'à ce que vous considérez que les définitions de classe sont conçus pour aller dans des fichiers qui sont inclus par de multiples modules de code source. C ++ doit savoir sur laquelle de ces fichiers source .cpp d'allouer l'espace pour la variable statique. Ce ne sont pas un problème avec des variables non statiques parce que l'espace est alloué dans chaque objet créé.


» » » » Comment utiliser les membres statiques en C ++