Klasseninterne Initialisierung statischer Mitglieder in C
In C ist die Definition einer statischen Mitgliedsvariablen innerhalb der Klassendeklaration nicht zulässig. Diese Aktion führt zum Kompilierungsfehler „ISO C verbietet die klasseninterne Initialisierung des nicht konstanten statischen Mitglieds ‚j‘“.
Gründe für das Verbot:
Ausnahme für Const-Mitglieder:
Statische Const-Mitglieder dürfen in der Klassendeklaration initialisiert werden, da sie nicht geändert werden nach der Initialisierung. Dies stellt die Effizienz des Codes sicher und macht eine explizite Initialisierung überflüssig.
Auswirkungen auf Standardwerte:
In C werden statische Variablen automatisch auf 0 initialisiert, wenn dies nicht explizit der Fall ist initialisiert. In C werden statische Variablen jedoch nicht automatisch initialisiert. Sie müssen sie entweder in der Klassendeklaration (für const-Mitglieder) oder in einer separaten .cpp-Datei manuell initialisieren.
Lösung:
Um eine nicht konstante Statik zu definieren Wenn Sie eine Mitgliedsvariable in C verwenden, sollten Sie sie in einer separaten CPP-Datei und nicht in der Klassendeklaration initialisieren.
Für Beispiel:
// Header file class Test { public: static int j; }; // .cpp file int Test::j = 0;
Das obige ist der detaillierte Inhalt vonWarum kann ich nicht konstante statische Mitglieder innerhalb einer C-Klasse nicht initialisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!