Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bolehkah C Enumerasi Mewarisi daripada Enumerasi Lain?

Bolehkah C Enumerasi Mewarisi daripada Enumerasi Lain?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-31 01:45:291019semak imbas

Can C   Enumerations Inherit from Other Enumerations?

Warisan Penghitungan dalam C

Pengenkapsulan ialah prinsip pengaturcaraan asas yang menggalakkan kebolehgunaan semula dan kebolehselenggaraan kod. Dalam C , pewarisan membenarkan kelas untuk mewarisi sifat dan fungsi daripada kelas asasnya. Bolehkah kita memanjangkan konsep ini kepada penghitungan?

Persoalan yang dikemukakan ialah: adakah terdapat cara untuk mewarisi enum daripada enum lain dalam C ? Khususnya:

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


enum eDerived: public eBase
{
   four=4, five, six
};</code>

Mengatasi Had

Walaupun sintaks yang ditunjukkan di atas tidak disokong secara langsung, terdapat corak untuk mencapai kefungsian yang serupa:

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

class EnumDeriv : public Enum
{
public:
    enum
    {
        Three = Enum::Last,
        Four,
        Five
    };
};</code>

Di sini, kami mentakrifkan Enum sebagai kelas yang mengandungi jenis terhitung. EnumDeriv mewarisi secara terbuka daripada Enum. Perhatikan bahawa kedua-dua penghitungan menggunakan kata kunci enum dalam kelas masing-masing.

Mengakses Nilai Diwarisi

Untuk mengakses nilai yang diwarisi, kami awalan nama penghitungan dengan nama kelas, cth., EnumDeriv::One. Pemalar Terakhir juga boleh diakses daripada EnumDeriv, membenarkan kesinambungan yang lancar.

Demonstrasi

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

Output:

1
4

Atas ialah kandungan terperinci Bolehkah C Enumerasi Mewarisi daripada Enumerasi Lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn