Heim >Backend-Entwicklung >C++ >Wie verhalten sich statische Variablen in Mitgliedsfunktionen über verschiedene Instanzen einer Klasse hinweg?

Wie verhalten sich statische Variablen in Mitgliedsfunktionen über verschiedene Instanzen einer Klasse hinweg?

Susan Sarandon
Susan SarandonOriginal
2024-11-09 09:06:01825Durchsuche

How do static variables in member functions behave across different instances of a class?

Statische Variablen in Mitgliedsfunktionen

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!

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