Avatar ·

ما الفرق بين الوراثة public و protected و private في C++؟

مرحبًا أيها الزملاء! بدأت في تعلم لغة C++ ووصلت إلى الوراثة، لكنني ارتبكت في معدّلات الوصول عند وراثة الفئات. تشرح الكتب الأمر بطريقة معقدة نوعًا ما. لنفترض أن هناك فئة أساسية (Base class) تحتوي على حقول مختلفة: ```cpp class Base { public: int pub = 1; protected: int prot = 2; private: int priv = 3; }; ``` لماذا في C++ يجب كتابة `class Derived : public Base`، وليس فقط `class Derived : Base`؟ ما الذي سيتغير إذا كتبت `class Derived : private Base` أو `class Derived : protected Base`؟ لقد جربت خيارات مختلفة، لكنني لا أفهم المنطق. على سبيل المثال، إذا ورثت عبر `private`، فهل يمكنني داخل الفئة المشتقة (Derived class) الوصول إلى `pub` و `prot`؟ وماذا عن خارج الفئة؟ ماذا يحدث إذا ورثت هيكلًا (struct) من فئة (class)؟ والأهم — لماذا نحتاج أساسًا إلى هذه الأنواع الثلاثة من الوراثة، إذا كان بإمكاني استخدام `public` في كل مكان؟ يرجى التوضيح بكلمات بسيطة مع أمثلة. يُفضل أن يكون الشرح مبسطًا جدًا حتى يفهمه المبتدئ. شكرًا مقدمًا! <<>>

ملخص