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!