Initialisierung statischer Mitglieder in C
In C kann die Definition statischer Mitglieder innerhalb von Klassendefinitionen ein verwirrendes Thema sein. Dieser Artikel befasst sich mit Fragen zur Initialisierung statischer Variablen in C und untersucht, warum die In-Class-Initialisierung verboten ist und wie man sie richtig initialisiert.
1. Verbot der In-Class-Initialisierung
Beim Versuch, eine öffentliche statische Variable innerhalb einer Klassendeklaration zu definieren, wie unten gezeigt, können Kompilierungsfehler auftreten:
public: static int j = 0;
Dies liegt daran, dass Der C-Standard verbietet die Initialisierung nicht konstanter statischer Mitglieder innerhalb von Klassendeklarationen, wie in der Fehlermeldung angegeben: „ISO C verbietet die klasseninterne Initialisierung nicht konstanter statischer Mitglieder.“ 'j'."
2. Zulässige Initialisierung von Const-Mitgliedern
Im Gegensatz zu nicht-konstanten statischen Mitgliedern können konstante statische Mitglieder innerhalb von Klassendeklarationen initialisiert werden. Dies ist zulässig, da const-Mitglieder als Konstanten zur Kompilierungszeit betrachtet werden und mit einem Wert initialisiert werden müssen, der zur Kompilierungszeit bekannt ist.
3. Initialisierung statischer Variablen in C
In C werden statische Variablen nicht wie in C automatisch auf Null initialisiert. Um statische Variablen in C zu initialisieren, müssen Sie ihre Anfangswerte explizit außerhalb der Klasse definieren Deklaration, typischerweise in einer separaten Quelldatei (.cpp).
Um beispielsweise die oben deklarierte statische Variable j zu initialisieren, würden Sie den Code wie folgt ändern folgt:
// Header file class Test { public: static int j; }; // Source file int Test::j = 0;
Schlussfolgerung
In C ist die In-Class-Initialisierung von nicht konstanten statischen Mitgliedern verboten, da beim Initialisieren statischer Variablen außerhalb Flexibilität erforderlich ist von Klassendeklarationen. Statische Const-Mitglieder können jedoch in Klassendeklarationen initialisiert werden. Statische Variablen werden in C nicht automatisch auf Null initialisiert; Ihre Anfangswerte müssen explizit definiert werden.
Das obige ist der detaillierte Inhalt vonWie kann ich statische Mitglieder in C richtig initialisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!