Vererbung von Aufzählungen in C
Kapselung ist ein grundlegendes Programmierprinzip, das die Wiederverwendbarkeit und Wartbarkeit von Code fördert. In C ermöglicht die Vererbung, dass Klassen Eigenschaften und Funktionalitäten von ihren Basisklassen erben. Können wir dieses Konzept auf Aufzählungen erweitern?
Die gestellte Frage lautet: Gibt es eine Möglichkeit, eine Aufzählung von einer anderen Aufzählung in C zu erben? Konkret:
<code class="cpp">enum eBase { one=1, two, three }; enum eDerived: public eBase { four=4, five, six };</code>
Überwindung der Einschränkungen
Während die oben gezeigte Syntax nicht direkt unterstützt wird, gibt es ein Muster, um eine ähnliche Funktionalität zu erreichen:
<code class="cpp">class Enum { public: enum { One = 1, Two, Last }; }; class EnumDeriv : public Enum { public: enum { Three = Enum::Last, Four, Five }; };</code>
Hier definieren wir Enum als eine Klasse, die einen Aufzählungstyp enthält. EnumDeriv erbt öffentlich von Enum. Beachten Sie, dass beide Aufzählungen das Schlüsselwort enum innerhalb ihrer jeweiligen Klassen verwenden.
Zugriff auf geerbte Werte
Um auf die geerbten Werte zuzugreifen, stellen wir dem Aufzählungsnamen den Klassennamen voran. z. B. EnumDeriv::One. Auf die Last-Konstante kann auch über EnumDeriv zugegriffen werden, was eine nahtlose Kontinuität ermöglicht.
Demonstration
<code class="cpp">int main() { std::cout << EnumDeriv::One << std::endl; std::cout << EnumDeriv::Four << std::endl; return 0; }</code>
Ausgabe:
1 4
Das obige ist der detaillierte Inhalt vonKönnen C-Aufzählungen von anderen Aufzählungen erben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!