Betrachten Sie die folgende Klasse:
class A { void foo() { static int i; i++; } };
Beim Umgang mit statischen Variablen innerhalb von Mitgliedsfunktionen in C ist dies der Fall entscheidend, um zu verstehen, wie sie sich über Instanzen hinweg verhalten.
Mehrere Instanzen und statische Variablen
Im Gegensatz zur Annahme, dass jede Instanz ihre eigene Kopie der statischen Variablen besitzen würde, in In diesem speziellen Szenario gibt es im gesamten Programm nur eine Kopie von static int i. Dies liegt daran, dass Klasse A eine Nicht-Vorlagenklasse und A::foo() eine Nicht-Vorlagenfunktion ist.
Auswirkungen der Instanz auf statische Variablen
Unabhängig davon Davon, welche Instanz von A die Methode foo() aufruft, ist die gemeinsam genutzte statische Variable i betroffen. Wenn Sie beispielsweise mehrere Instanzen von A wie folgt deklarieren:
A o1, o2, o3;
Der Aufruf von foo() für eine dieser Instanzen erhöht die i-Variable:
o1.foo(); // i = 1 o2.foo(); // i = 2 o3.foo(); // i = 3 o1.foo(); // i = 4
Zusammenfassend: statisch Variablen in Mitgliedsfunktionen werden von allen Instanzen der Klasse gemeinsam genutzt, sodass jede Instanz auf denselben Wert zugreifen und ihn ändern kann.
Das obige ist der detaillierte Inhalt vonWie verhalten sich statische Variablen in Mitgliedsfunktionen über verschiedene Instanzen einer Klasse hinweg?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!