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
Susan Sarandonoriginal
2024-11-09 09:06:01845parcourir

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++;
   }
};

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;

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

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!

Déclaration:
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