Maison > développement back-end > C++ > Les énumérations C peuvent-elles hériter d'autres énumérations ?

Les énumérations C peuvent-elles hériter d'autres énumérations ?

Mary-Kate Olsen
Libérer: 2024-10-31 01:45:29
original
1069 Les gens l'ont consulté

Can C   Enumerations Inherit from Other Enumerations?

Héritage des énumérations en C

L'encapsulation est un principe de programmation fondamental qui favorise la réutilisabilité et la maintenabilité du code. En C , l'héritage permet aux classes d'hériter des propriétés et fonctionnalités de leurs classes de base. Peut-on étendre ce concept aux énumérations ?

La question posée est : existe-t-il un moyen d'hériter d'une énumération d'une autre énumération en C ? Plus précisément :

<code class="cpp">enum eBase 
{
   one=1, two, three
};


enum eDerived: public eBase
{
   four=4, five, six
};</code>
Copier après la connexion

Surmonter les limitations

Bien que la syntaxe indiquée ci-dessus ne soit pas directement prise en charge, il existe un modèle pour obtenir une fonctionnalité similaire :

<code class="cpp">class Enum
{
public:
    enum
    {
        One = 1,
        Two,
        Last
    };
};

class EnumDeriv : public Enum
{
public:
    enum
    {
        Three = Enum::Last,
        Four,
        Five
    };
};</code>
Copier après la connexion

Ici, nous définissons Enum comme une classe contenant un type énuméré. EnumDeriv hérite publiquement d'Enum. Notez que les deux énumérations utilisent le mot-clé enum dans leurs classes respectives.

Accès aux valeurs héritées

Pour accéder aux valeurs héritées, nous préfixons le nom de l'énumération avec le nom de la classe, par exemple, EnumDeriv :: One. La constante Last est également accessible depuis EnumDeriv, permettant une continuité transparente.

Démonstration

<code class="cpp">int main()
{
    std::cout << EnumDeriv::One << std::endl;
    std::cout << EnumDeriv::Four << std::endl;
    return 0;
}</code>
Copier après la connexion

Sortie :

1
4
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal