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
Freigeben: 2024-11-09 09:06:01
Original
837 Leute haben es durchsucht

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

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

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

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!

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