C++ Inheritance

زبان C++ برای پیاده‌سازی Inheritance (وراثت) دو روش و نکته مهم داریم که به شما کمک می‌کنه کلاس‌های جدید رو از کلاس‌های قبلی بسازید و کد رو قابل استفاده‌ی مجدد کنید.

🔹 تعریف کلاس پایه (Base Class)
کلاس پایه همون کلاسیه که ویژگی‌ها و توابع مشترک رو نگه می‌داره.

#include <iostream> using namespace std; class Animal { public: void eat() { cout << "I can eat!" << endl; } void sleep() { cout << "I can sleep!" << endl; } };

📌 اینجا Animal کلاس پایه است که دو تابع eat و sleep داره.

🔹 تعریف کلاس مشتق (Derived Class)
کلاس مشتق ویژگی‌ها و رفتار کلاس پایه رو به ارث می‌بره.

#include <iostream> using namespace std; class Animal { public: void eat() { cout << "I can eat!" << endl; } void sleep() { cout << "I can sleep!" << endl; } }; // Bird از Animal ارث‌بری می‌کنه class Bird : public Animal { public: void fly() { cout << "I can fly!" << endl; } }; int main() { Bird b; b.eat(); // تابع کلاس پایه b.sleep(); // تابع کلاس پایه b.fly(); // تابع کلاس خودش return 0; }

📌 خروجی:

I can eat! I can sleep! I can fly!

🔹 انواع وراثت
می‌تونیم نوع ارث‌بری رو مشخص کنیم:

class Derived : public Base // Public Inheritance class Derived : protected Base // Protected Inheritance class Derived : private Base // Private Inheritance
  • public : اعضای public در کلاس مشتق هم public می‌مونن. (رایج‌ترین حالت)

  • protected : اعضای public به protected تبدیل می‌شن.

  • private : همه اعضای public و protected به private تبدیل می‌شن.

🔹 سازنده‌ها و ارث‌بری
وقتی شیء کلاس مشتق ساخته میشه، اول سازنده‌ی کلاس پایه اجرا میشه:

class Parent { public: Parent() { cout << "Parent constructor\n"; } }; class Child : public Parent { public: Child() { cout << "Child constructor\n"; } }; int main() { Child c; return 0; }

📌 خروجی:

Parent constructor Child constructor

نکات مهم

  • وراثت کد رو تمیز و قابل استفاده‌ی مجدد می‌کنه.

  • در پروژه‌های بزرگ، از public inheritance بیشتر استفاده میشه.

  • اگر تابعی در کلاس مشتق با همون نام در کلاس پایه باشه، تابع جدید override میشه.