C ++: utilise pour les membres de données statiques

Membres de données statiques ont des utilisations trente-six en C ++, mais voici quelques-uns. D'abord, vous pouvez utiliser les membres statiques de garder le compte du nombre d'objets qui flottent.

Rappelez-vous, cependant, que ce nombre reflète le nombre de Étudiant objets (y compris les temporaires) et pas nécessairement le nombre d'étudiants.

Une utilisation étroitement liée à un membre statique est comme un drapeau pour indiquer si une action particulière a eu lieu. Par exemple, une classe Radio peut-être besoin d'initialiser le matériel avant d'envoyer le premier mélodie commande mais pas avant ultérieure airs. Un drapeau indiquant que tel est le premier mélodie est juste le billet. Cela comprend signalisation quand une erreur est survenue.

Une autre utilisation courante est de fournir un espace pour le pointeur sur le premier élément d'une liste - la soi-disant pointeur de tête. Les membres statiques peuvent allouer des bits de données commune que tous les objets dans toutes les fonctions action (surutilisation de cette mémoire commune est une très mauvaise idée parce que cela fait des erreurs de suivi difficile).

Remarquez comment la fonction de membre statique nombre() peuvent accéder au membre de données statiques noOfStudents. En fait, ce est le seul membre de la classe qu'il peut accéder - une fonction membre statique est pas associée à aucun objet. Vous déclariez Nom () d'être statique, vous pourrait se référer à Nom d'étudiant(), ce qui aurait immédiatement mendier la question, “ Quel nom ”?;

L'extrait suivant est un seul cas où une méthode statique peut se référer directement à un membre non statique:

classe Étudiant {public: static int elementsInName () {int sizeOfArray = sizeof (nom) -Retour sizeOfArray / sizeof (char) -} protégée: char nom [MAX_NAME_SIZE] -} -

Voici la méthode statique elementsInName () fait référence à nom sans faire référence à un objet. Ce ne fut pas juridique avant de la norme 2011. Il est permis maintenant parce que le taille de nom est le même pour tous les objets. Ainsi, il n'a pas d'importance quel objet vous parlez.

Vous pouvez vous demander pourquoi sizeof (nom) a été divisé par sizeof (char). La sizeof (nom) retourne le nombre d'octets dans le nom du tableau. Mais ce que vous voulez est le nombre d'éléments dans nommer, de sorte que vous devez diviser par la taille de chaque élément de nom.

Mais est pas sizeof (char) égale à 1? Eh bien, peut-être, mais peut-être pas. Divisant le taille de le tableau par le taille de un seul élément fonctionne toujours pour tous les types de tableaux.


» » » » C ++: utilise pour les membres de données statiques