Heim > Backend-Entwicklung > C++ > Hauptteil

Erhöhen sich statische Variablen in Mitgliedsfunktionen für alle Instanzen oder nur für die aufrufende Instanz?

Patricia Arquette
Freigeben: 2024-11-08 09:41:01
Original
579 Leute haben es durchsucht

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

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++;
   }
};
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage