Undefinierte Referenzen auf statische Elemente verstehen
Beim Arbeiten mit Klassen, die statische Datenelemente enthalten, können Fehler im Zusammenhang mit „undefinierten Referenzen“ auftreten. Dies kann auf ein mangelndes klares Verständnis von Deklarationen und Definitionen zurückgeführt werden.
Deklarationen und Definitionen
In einer Klassendeklaration werden statische Datenelemente normalerweise deklariert, aber nicht definiert . Diese Erklärung legt die Existenz und den Typ des Mitglieds fest. Sofern es jedoch nicht in einer Weise verwendet wird, die eine Adresse erfordert, ist eine spezifische Definition noch nicht erforderlich.
Um eine Definition für ein statisches Datenelement bereitzustellen, sollte es in einer separaten Quelldatei abgelegt werden, die die Implementierung enthält für die Klasse. Die Definition besteht aus dem Namen des Mitglieds, dem der class :: Scope-Operator vorangestellt ist, gefolgt von einem optionalen Initialisierer.
Ausnahme für Konstanten
Für statische Mitglieder, die const sind Bei Integral- oder Aufzählungstypen kann in der Klassendeklaration ein Initialisierer bereitgestellt werden. Dadurch entfällt nicht die Notwendigkeit einer Definition in der Quelldatei, es wird jedoch sichergestellt, dass die Definition keinen Initialisierer enthält.
Vorlagen
Statische Datenmitglieder der Klasse Vorlagen sind unterschiedlich definiert. Die Definition ist zusammen mit der Klassendeklaration in der Header-Datei enthalten. Diese Ausnahme von der One-Definition-Regel ermöglicht, dass das statische Element einmal für jede Instanziierung der Vorlage definiert wird.
Andere Verwendungen von statischen Elementen
Über statische Datenelemente hinaus: static kann auch auf Funktionen und Objekte in einem Nicht-Klassen-Kontext angewendet werden, wo es unterschiedliche Bedeutungen angibt:
Wenn Sie diese Konzepte verstehen, können Sie statische Datenelemente in C effektiv verarbeiten und Fehler im Zusammenhang mit undefinierten Referenzen vermeiden.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich „Undefinierte Verweise' auf statische Elemente in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!