C++ Polymorphism
در زبان C++، Polymorphism (چندریختی) یعنی یک رابط (Interface) واحد، رفتارهای متفاوتی در زمان اجرا یا کامپایل داشته باشه.
به بیان ساده: یک نام واحد برای چند کار مختلف.
🔹 انواع Polymorphism
دو نوع اصلی وجود دارد:
-
Compile-time Polymorphism (در زمان کامپایل)
-
Function Overloading
-
Operator Overloading
-
-
Run-time Polymorphism (در زمان اجرا)
-
Virtual Functions و Function Overriding
-
1️⃣ Compile-time Polymorphism
🔸 Function Overloading
چند تابع با نام یکسان ولی پارامترهای متفاوت:
🔸 Operator Overloading
تعریف عملگرها برای رفتار دلخواه:
2️⃣ Run-time Polymorphism
🔸 Virtual Functions و Function Overriding
وقتی یک تابع مجازی (virtual
) در کلاس پایه تعریف کنیم، و اون رو در کلاس مشتق override کنیم، تصمیمگیری برای اجرای تابع در زمان اجرا انجام میشه.
اگر کلمهٔ
virtual
را نگذاریم، خروجی همیشه نسخهٔ کلاس پایه خواهد بود.
🔹 Pure Virtual & Abstract Class
اگه توابع کاملاً مجازی تعریف کنیم، اون کلاس Abstract میشه و نمیتونیم ازش شیء بسازیم:
کلاس مشتق باید ()draw
رو پیادهسازی کنه.
✅ خلاصه نکات
-
Compile-time: انتخاب تابع یا عملگر در زمان کامپایل (Overloading).
-
Run-time: انتخاب نسخهٔ صحیح تابع در زمان اجرا (Virtual/Override).
-
برای رفتار پویا و چندریختی واقعی، از virtual functions استفاده کنید.