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
Patricia ArquetteOriginal
2024-11-07 21:45:03722Durchsuche

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++;
   }
};

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

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!

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