Heim >Backend-Entwicklung >C++ >Warum werden statische Mitgliedsvariablen in C außerhalb der Klassendefinition initialisiert?
Initialisierung statischer Mitgliedsvariablen in C
In der objektorientierten Programmierung (OOP) ist es üblich, Mitgliedsvariablen innerhalb von Klassen zu haben. Allerdings unterscheiden sich statische Mitgliedsvariablen in C von ihren nicht statischen Gegenstücken dadurch, dass sie außerhalb der Klassendefinition initialisiert werden. Dies wirft die Frage auf: Warum ist das so?
Logische Einschränkungen
struct Gizmo { static string name = "Foo"; };
In diesem Beispiel würde der Name in jeder Übersetzungseinheit definiert werden, die die Header-Datei enthält, was gegen die Regel verstößt.
Historische Perspektiven
Einige Entwickler argumentieren, dass die Initialisierung innerhalb der Klasse intuitiver und weniger verwirrend wäre. Der C-Standard hat dieses Verhalten jedoch aus folgenden Gründen nicht geändert:
Fazit
Die Anforderung für die externe Initialisierung statischer Elemente Variablen in C werden durch logische Einschränkungen und historische Überlegungen bestimmt. Durch die Zentralisierung der Initialisierung in einer Übersetzungseinheit gewährleistet der Standard Konsistenz, Einhaltung der One-Definition-Regel und Abwärtskompatibilität mit vorhandenem C-Code.
Das obige ist der detaillierte Inhalt vonWarum werden statische Mitgliedsvariablen in C außerhalb der Klassendefinition initialisiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!