Erweitern von Aufzählungen: Erkunden der Vererbung von Basis-Aufzählungsklassen
In C bieten Aufzählungen eine praktische Möglichkeit, feste Wertemengen darzustellen. Es kann jedoch Szenarios geben, in denen Sie Werte von einer vorhandenen Enum-Klasse erben möchten. Diese Frage untersucht die Möglichkeit, eine solche Vererbung zu erreichen.
Können Aufzählungen andere Aufzählungen erben?
Standardmäßig können Aufzählungstypen in C nicht von anderen Aufzählungen erben. Wir können jedoch einen klassenbasierten Ansatz nutzen, um die Aufzählungsvererbung zu simulieren.
Klassenbasierte Aufzählungsvererbung
Der folgende Code zeigt, wie eine Basis- und eine abgeleitete Aufzählung erstellt wird Verwenden von Klassen:
#include
#include
class Enum
{
public:
enum
{
One = 1,
Two,
Last
};
};
class EnumDeriv : public Enum
{
public:
enum
{
Three = Enum::Last,
Four,
Five
};
};
int main()
{
std::cout In diesem Beispiel definiert die Enum-Klasse eine Enumeration mit drei Werten: Eins, Zwei und Last. Die EnumDeriv-Klasse erbt von Enum und erweitert sie durch das Hinzufügen von drei weiteren Werten: Drei, Vier und Fünf.
Die Enum-Werte sind innerhalb der Klassen gültig, was die Vererbung von Werten ermöglicht und gleichzeitig die Eindeutigkeit des Namens beibehält. In diesem Fall können wir ohne Mehrdeutigkeit auf EnumDeriv::One und EnumDeriv::Four zugreifen.
Vorteile der klassenbasierten Enum-Vererbung
- Ermöglicht Aufzählungen Vorhandene Wertesätze erben und erweitern.
- Sorgt für Konsistenz und Erweiterbarkeit Möglichkeit zur Handhabung der Enum-Vererbung.
- Behält die Eindeutigkeit des Namens innerhalb der abgeleiteten Enum bei.
- Kann in Verbindung mit anderen Funktionen von C verwendet werden, z. B. Vorlagen und Makros.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3