C++ Access Specifiers
در ++C برای کنترل سطح دسترسی اعضای کلاس (خصوصیات و توابع) از Access Specifiers (مشخصکنندههای دسترسی) استفاده میشود.
این مشخصکنندهها تعیین میکنند که چه کسی میتواند به متغیرها یا متدهای کلاس دسترسی داشته باشد.
🔑 انواع Access Specifier
1️⃣ public
-
اعضا در هرجای برنامه قابل دسترسی هستند.
-
بیرون از کلاس و درون کلاس یا کلاسهای فرزند قابل استفادهاند.
2️⃣ private (پیشفرض کلاسها)
-
اعضا فقط درون همان کلاس قابل دسترسی هستند.
-
بیرون از کلاس و حتی در کلاسهای فرزند مستقیم نمیشود به آنها دسترسی داشت.
-
برای کار با اعضای private معمولاً تابعهای public (Getter/Setter) تعریف میکنیم.
3️⃣ protected
-
شبیه private است، اما:
-
کلاسهای فرزند (Derived Class) میتوانند به اعضای protected کلاس والد دسترسی داشته باشند.
-
بیرون از سلسلهمراتب ارثبری قابل دسترسی نیست.
🏷️ جدول خلاصه
Specifier | درون کلاس | کلاس فرزند | بیرون از کلاس |
---|---|---|---|
public | ✅ | ✅ | ✅ |
protected | ✅ | ✅ | ❌ |
private | ✅ | ❌ | ❌ |
✅ نکات مهم
-
پیشفرض برای کلاسها:
private
-
پیشفرض برای struct در C++:
public
-
Encapsulation (کپسولهسازی) معمولاً با private و توابع public انجام میشود.
💡 جمعبندی
-
public
: برای اعضایی که باید همه جا در دسترس باشند. -
private
: برای اطلاعات حساس و جزئیات داخلی. -
protected
: برای وقتی که میخواهید فرزندان به اعضا دسترسی داشته باشند ولی بقیه نه.