C ++: déclarant fonctions membres statiques

Les fonctions membres peuvent être déclarées static en C ++. Fonctions membres statiques sont utiles lorsque vous souhaitez associer une action à une classe, mais vous ne devez associer cette action à un objet particulier.

Par exemple, la fonction de membre Canard :: voler () est associée à un particulier canard, tandis que la fonction de membre plutôt plus drastique Canard :: goExtinct () n'est pas.

Comme les membres de données statiques, les fonctions membres statiques sont associées à une classe et non pas avec un objet particulier de cette classe. Cela signifie que, comme une référence à un membre de données statiques, une référence à une fonction membre statique ne nécessite pas un objet. Si un objet est présent, seul son type est utilisé.




Ainsi, les deux appels à la fonction de membre statique nombre() dans l'exemple suivant sont légales. Cet exemple est un programme simple statique - un programme utilisant des éléments statiques - CallStaticMember:

// CallStaticMember - démontrer deux façons d'appeler une fonction membre statique // // # include #comprendre #comprendre using namespace std classe Étudiant {public: étudiants (const char * PN = "No Name"): SNAME (PN) {noOfStudents ++ -} ~ Étudiant () {} noOfStudents --- const string name () {return sName-} static int nombre () {return} noOfStudents- protégées: string sName-statiques noOfStudents int -} - int étudiants :: noOfStudents = 0-int main (int argcs, char * pargs []) { // créer deux élèves et demandez à la classe "combien?" s1 Étudiant ("Chester") - Étudiant * pS2 = new Étudiant («Scooter») - cout lt; lt; "Créé " lt; lt; s1.name () lt; lt; »Et« lt; lt; PS2-> name () lt; lt; endl-cout lt; lt; "Nombre d'étudiants est" lt; lt; s1.number () lt; lt; endl - // maintenant se débarrasser d'un étudiant et demander againcout lt; lt; "Suppression" lt; lt; PS2-> name () lt; lt; endl-supprimer PS2-cout lt; lt; "Nombre d'étudiants est" lt; lt; Numéro d'étudiant() lt; lt; endl - // attendre utilisateur est prêt avant le programme // mettre fin pour permettre à l'utilisateur de voir le resultscout de programme lt; lt; "Appuyez sur Entrée pour continuer ..." lt; lt; endl-cin.ignore (10, ' n') - cin.get () - retourner 0-}

Ce programme crée deux Étudiant objets, un local et un hors le tas. Il affiche ensuite leurs noms et le comptage du nombre d'étudiants. Suivant le programme supprime l'un des étudiants et demande à la classe combien d'étudiants sont là-bas. La sortie du programme apparaît comme suit:

Créé Chester et ScooterNumber des étudiants est 2Deleting ScooterNumber des étudiants est 1Appuyez sur une touche pour continuer ...

Cette classe tient ses membres de données protégées et fournit des fonctions d'accès qui permettent à l'extérieur (nonÉtudiant) Code pour lire, mais pas les modifier.

Déclarer le type de retour Nom () Procédé pour être chaîne plutôt que de simplement chaîne provoque la fonction pour renvoyer une référence au nom existant de l'objet plutôt que de créer un objet de chaîne temporaire. L'ajout de la const à la déclaration maintient l'appelant de modifier le membre du nom de la classe.


» » » » C ++: déclarant fonctions membres statiques