ما الفرق بين الوراثة 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` في كل مكان؟
يرجى التوضيح بكلمات بسيطة مع أمثلة. يُفضل أن يكون الشرح مبسطًا جدًا حتى يفهمه المبتدئ. شكرًا مقدمًا!
<<>>