Maison > développement back-end > C++ > Les variables statiques dans les fonctions membres s'incrémentent-elles pour toutes les instances ou uniquement pour l'instance appelante ?

Les variables statiques dans les fonctions membres s'incrémentent-elles pour toutes les instances ou uniquement pour l'instance appelante ?

Patricia Arquette
Libérer: 2024-11-08 09:41:01
original
626 Les gens l'ont consulté

Do Static Variables in Member Functions Increment for All Instances or Only the Calling Instance?

Variables statiques dans les fonctions membres : comprendre les déclarations spécifiques à une instance et les déclarations globales

En C, les variables statiques dans les fonctions membres présentent une situation unique où leur comportement diffère de celui de leurs homologues non statiques. Explorons comment les variables statiques fonctionnent dans les fonctions membres.

Considérez la définition de classe suivante :

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

Si vous déclarez plusieurs instances de la classe A, la question se pose : l'appel de foo() sur toute instance incrémente la variable statique i pour toutes les instances ou uniquement pour l'instance sur laquelle foo() est appelée ?

La réponse réside dans la nature des variables statiques. Contrairement aux variables membres ordinaires, spécifiques à chaque instance d'une classe, les variables statiques sont partagées entre toutes les instances de cette classe. Cela signifie qu'il n'y a qu'une seule instance de la variable statique i dans toutes les instances de la classe A.

Par conséquent, toute instance de la classe A affectera le même i. Le même, je resterai tout au long de la durée de vie du programme. Pour illustrer ce comportement :

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

Dans cet exemple, il n'y en a qu'un seul partagé entre toutes les instances de la classe A, et l'appel de foo() sur n'importe quelle instance incrémente le même i. Il est important de garder à l'esprit ce comportement partagé des variables statiques lors de la conception des classes et de leurs fonctions membres.

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