Heim > Artikel > Backend-Entwicklung > Erhöhen sich statische Variablen in Mitgliedsfunktionen für alle Instanzen oder nur für die aufrufende Instanz?
Statische Variablen in Mitgliedsfunktionen: Instanzspezifische und globale Deklarationen verstehen
In C stellen statische Variablen innerhalb von Mitgliedsfunktionen eine einzigartige Situation dar wo sich ihr Verhalten von dem ihrer nichtstatischen Gegenstücke unterscheidet. Lassen Sie uns untersuchen, wie statische Variablen in Mitgliedsfunktionen funktionieren.
Bedenken Sie die folgende Klassendefinition:
class A { void foo() { static int i; // Static variable declaration i++; } };
Wenn Sie mehrere Instanzen der Klasse A deklarieren, stellt sich die Frage: Funktioniert der Aufruf von foo()? Erhöht jede Instanz die statische Variable i für alle Instanzen oder nur für die Instanz, auf der foo() aufgerufen wird?
Die Antwort liegt in der Natur statischer Variablen. Im Gegensatz zu gewöhnlichen Mitgliedsvariablen, die für jede Instanz einer Klasse spezifisch sind, werden statische Variablen von allen Instanzen dieser Klasse gemeinsam genutzt. Dies bedeutet, dass es in allen Instanzen der Klasse A nur eine Instanz der statischen Variablen i gibt.
Daher wirkt sich jede Instanz der Klasse A auf dasselbe i aus. Dasselbe werde ich während der gesamten Laufzeit des Programms bleiben. Um dieses Verhalten zu veranschaulichen:
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
In diesem Beispiel gibt es nur ein i, das von allen Instanzen der Klasse A gemeinsam genutzt wird, und der Aufruf von foo() für jede Instanz erhöht das gleiche i. Dieses gemeinsame Verhalten statischer Variablen muss beim Entwerfen von Klassen und ihren Mitgliedsfunktionen berücksichtigt werden.
Das obige ist der detaillierte Inhalt vonErhöhen sich statische Variablen in Mitgliedsfunktionen für alle Instanzen oder nur für die aufrufende Instanz?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!