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