Maison >développement back-end >C++ >Comment les variables statiques se comportent-elles dans les fonctions membres en C ?

Comment les variables statiques se comportent-elles dans les fonctions membres en C ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-07 21:45:03722parcourir

How Do Static Variables Behave within Member Functions in C  ?

Variables statiques dans les fonctions membres en C

En C, les fonctions membres peuvent contenir des variables statiques. Une variable membre statique au sein d'une classe est partagée entre toutes les instances de la classe, quel que soit l'objet sur lequel la fonction est appelée.

Considérons la classe suivante :

class A {
public:
   void foo() {
      static int i;
      i++;
   }
};

Contrairement à En supposant que chaque instance de A aurait sa propre copie de i, il est important de noter qu'il n'y aura qu'une seule instance de i pour l'ensemble du programme. En effet, static int i est déclaré à l'intérieur de la définition de classe et en dehors de toute fonction spécifique, ce qui en fait un membre de la classe elle-même plutôt qu'une variable locale de la fonction foo.

Par conséquent, toute instance d'un objet A affectera le même i partagé et sa durée de vie persistera tout au long de l'exécution du programme. Par exemple :

A o1, o2, o3;
o1.foo(); // i = 1
o2.foo(); // i = 2
o3.foo(); // i = 3
o1.foo(); // i = 4

Dans ce scénario, toutes les instances de A accèdent et modifient la même variable statique i. L'appel de foo sur n'importe quelle instance incrémente le i partagé pour toute la classe.

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