Heim > Backend-Entwicklung > C++ > Wie verhalten sich statische Variablen innerhalb von Memberfunktionen in C?

Wie verhalten sich statische Variablen innerhalb von Memberfunktionen in C?

Patricia Arquette
Freigeben: 2024-11-07 21:45:03
Original
721 Leute haben es durchsucht

How Do Static Variables Behave within Member Functions in C  ?

Statische Variablen innerhalb von Mitgliedsfunktionen in C

In C können Mitgliedsfunktionen statische Variablen enthalten. Eine statische Mitgliedsvariable innerhalb einer Klasse wird von allen Instanzen der Klasse gemeinsam genutzt, unabhängig vom Objekt, für das die Funktion aufgerufen wird.

Betrachten wir die folgende Klasse:

class A {
public:
   void foo() {
      static int i;
      i++;
   }
};
Nach dem Login kopieren

Im Gegensatz zu Unter der Annahme, dass jede Instanz von A ihre eigene Kopie von i haben würde, ist es wichtig zu beachten, dass es für das gesamte Programm nur eine Instanz von i geben wird. Dies liegt daran, dass static int i innerhalb der Klassendefinition und außerhalb einer bestimmten Funktion deklariert wird, wodurch es zu einem Mitglied der Klasse selbst und nicht zu einer lokalen Variablen für die foo-Funktion wird.

Daher jede Instanz eines A-Objekts wirkt sich auf dasselbe gemeinsam genutzte i aus und seine Lebensdauer bleibt während der gesamten Ausführung des Programms bestehen. Zum Beispiel:

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

In diesem Szenario greifen alle Instanzen von A auf dieselbe statische Variable i zu und ändern sie. Der Aufruf von foo für eine beliebige Instanz erhöht das gemeinsame i für die gesamte Klasse.

Das obige ist der detaillierte Inhalt vonWie verhalten sich statische Variablen innerhalb von Memberfunktionen in C?. 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