Heim  >  Artikel  >  Backend-Entwicklung  >  Teilen statische Variablen in Mitgliedsfunktionen Werte über Klasseninstanzen hinweg?

Teilen statische Variablen in Mitgliedsfunktionen Werte über Klasseninstanzen hinweg?

DDD
DDDOriginal
2024-11-09 17:01:02156Durchsuche

Do Static Variables in Member Functions Share Values Across Class Instances?

Statische Variablen in Mitgliedsfunktionen: Gemeinsam genutzt oder instanzspezifisch?

Statische Variablen innerhalb von Mitgliedsfunktionen weisen in C ein einzigartiges Verhalten auf. Betrachten Sie die folgende Klassendefinition:

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

Es stellt sich die Frage: Wenn mehrere Instanzen der Klasse A erstellt werden, ändert der Aufruf von foo() auf einer Instanz die statische Variable i für alle Instanzen?

Entgegen der Erwartung individueller i-Kopien für jede Instanz verhalten sich statische Variablen in Mitgliedsfunktionen unterschiedlich. Im gegebenen Beispiel existiert nur eine Kopie der statischen Variablen i im gesamten Programm.

Jede Instanz der Klasse A wirkt sich auf dieselbe i-Variable aus, die während der gesamten Lebensdauer des Programms bestehen bleibt. Zur Veranschaulichung:

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

Daher erhöht jeder Aufruf von foo() für eine beliebige Instanz der Klasse A die gemeinsam genutzte i-Variable. Diese statischen Variablen bieten einen Mechanismus zum Teilen von Daten über alle Instanzen einer Klasse hinweg.

Das obige ist der detaillierte Inhalt vonTeilen statische Variablen in Mitgliedsfunktionen Werte über Klasseninstanzen hinweg?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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