"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > هل يمكن أن ترث تعدادات C++ من التعدادات الأخرى؟

هل يمكن أن ترث تعدادات C++ من التعدادات الأخرى؟

تم النشر بتاريخ 2024-11-16
تصفح:611

Can C   Enums Inherit from Other Enums?

توسيع التعدادات: استكشاف وراثة فئة التعداد الأساسية

في لغة C، توفر التعدادات طريقة مناسبة لتمثيل مجموعات ثابتة من القيم. ومع ذلك، قد تكون هناك سيناريوهات حيث تريد أن ترث القيم من فئة التعداد الموجودة. يستكشف هذا السؤال إمكانية تحقيق مثل هذا الميراث.

هل يمكن للتعدادات أن ترث التعدادات الأخرى؟

افتراضيًا، لا يمكن لأنواع التعداد في لغة C أن ترث من التعدادات الأخرى. ومع ذلك، يمكننا الاستفادة من النهج القائم على الفصل لمحاكاة وراثة التعداد.

وراثة التعداد على أساس الفصل

يوضح الكود التالي كيفية إنشاء تعداد أساسي ومشتق باستخدام الفئات:

#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 

في هذا المثال، تحدد فئة Enum تعدادًا بثلاث قيم: One وTwo وLast. ترث فئة EnumDeriv من Enum وتوسعها بإضافة ثلاث قيم أخرى: ثلاث وأربع وخمسة.

يتم تحديد نطاق قيم التعداد داخل الفئات، مما يسمح بوراثة القيم مع الحفاظ على تفرد الاسم. في هذه الحالة، يمكننا الوصول إلى EnumDeriv::One وEnumDeriv::Four دون أي غموض.

فوائد وراثة التعداد على أساس الفصل

  • يسمح للتعدادات بـ وراثة وتوسيع مجموعات القيم الموجودة.
  • يوفر طريقة متسقة وقابلة للتوسيع للتعامل مع التعداد الوراثة.
  • يحافظ على تفرد الاسم ضمن التعداد المشتق.
  • يمكن استخدامه مع ميزات أخرى في لغة C، مثل القوالب ووحدات الماكرو.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3