Definieren statischer Const-Ganzzahlmitglieder in Klassendefinitionen: Eine Untersuchung
C ermöglicht die Deklaration statischer Const-Ganzzahlmitglieder innerhalb von Klassendefinitionen. In diesem Zusammenhang ist es jedoch wichtig, den Unterschied zwischen Initialisierung und Definition zu verstehen.
Im bereitgestellten Beispielcode:
class test { public: static const int N = 10; };
Die Deklaration von N innerhalb der Klasse initialisiert sie mit einem Wert von 10. Dies ist jedoch nicht gleichbedeutend mit einer Definition. Um den aufgetretenen Linker-Fehler zu beheben, ist eine separate Definition von N außerhalb der Klassendefinition erforderlich. Dies kann durch eine Namespace-Bereichsdefinition erreicht werden, wie zum Beispiel:
const int test::N = 10;
Alternativ kann das Schlüsselwort constexpr verwendet werden, um statische const-Integer-Mitglieder in einem einzigen Schritt zu deklarieren und zu definieren, sodass kein separater Schritt erforderlich ist Definition:
class test { public: static constexpr int N = 10; };
Wenn std::min aufgerufen wird, werden Parameter erwartet, die als Referenz übergeben werden. Da N als statische konstante Ganzzahl deklariert ist, muss es definiert werden, um die Referenzanforderung zu erfüllen. Durch das Auskommentieren des Aufrufs von std::min kann der Code kompiliert werden, da die Definition von N nicht mehr erforderlich ist, obwohl immer noch darauf verwiesen wird.
Zusammenfassend lässt sich sagen, dass C die Initialisierung statischer const-Integer-Mitglieder innerhalb ermöglicht Bei Klassendefinitionen ist eine separate Definition für die Referenzierung des Werts erforderlich. Dies kann durch eine Namespace-Bereichsdefinition oder durch die Verwendung des Schlüsselworts constexpr erreicht werden.
Das obige ist der detaillierte Inhalt vonWie definiere ich Static Const Integer-Klassenmitglieder in C richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!