Maison > développement back-end > C++ > Comment les variables statiques des fonctions membres se comportent-elles dans différentes instances d'une classe ?

Comment les variables statiques des fonctions membres se comportent-elles dans différentes instances d'une classe ?

Susan Sarandon
Libérer: 2024-11-09 09:06:01
original
838 Les gens l'ont consulté

How do static variables in member functions behave across different instances of a class?

Variables statiques dans les fonctions membres

Considérez la classe suivante :

class A {
   void foo() {
      static int i;
      i++;
   }
};
Copier après la connexion

Lorsque vous traitez des variables statiques dans les fonctions membres en C, il est Il est crucial de comprendre comment ils se comportent à travers les instances.

Instances multiples et statiques Variables

Contrairement à l'hypothèse selon laquelle chaque instance posséderait sa propre copie de la variable statique, dans ce scénario spécifique, il n'y aura qu'une seule copie de static int i dans l'ensemble du programme. En effet, la classe A est une classe sans modèle et A::foo() est une fonction sans modèle.

Impact de l'instance sur la variable statique

Peu importe de quelle instance de A invoque la méthode foo(), la variable statique partagée i sera affectée. Par exemple, si vous déclarez plusieurs instances de A comme ceci :

A o1, o2, o3;
Copier après la connexion

Appeler foo() sur l'une de ces instances incrémentera la variable i :

o1.foo(); // i = 1
o2.foo(); // i = 2
o3.foo(); // i = 3
o1.foo(); // i = 4
Copier après la connexion

En conclusion, static les variables dans les fonctions membres sont partagées entre toutes les instances de la classe, permettant à n'importe quelle instance d'accéder et de modifier la même valeur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal