تعیین کننده های دسترسی(Access Specifiers)


تاکنون، با کلمه کلیدی public که در همه نمونه‌های کلاس ما ظاهر می‌شود، کاملاً آشنا هستید:




مثال



class MyClass {  // The class
  public:        // Access specifier
   
// class members goes here
};





کلمه کلیدی عمومی یک مشخص کننده دسترسی است.
مشخص‌کننده‌های دسترسی تعریف می‌کنند که اعضا (ویژگی‌ها و متدها) یک کلاس چگونه می‌توانند
قابل دسترسی باشد. در مثال بالا، اعضا عمومی هستند - به این معنی که آنها
از خارج از کد قابل دسترسی و تغییر است.


با این حال، اگر بخواهیم چه می شود
اعضا خصوصی باشند و از دنیای بیرون پنهان باشند؟


در C++، سه مشخص کننده دسترسی وجود دارد:



  • عمومی - اعضا از خارج از کلاس قابل دسترسی هستند

  • خصوصی - اعضا قابل دسترسی نیستند (یا
    مشاهده شده) از خارج از کلاس

  • محافظت شده - اعضا را نمی توان از
    با این حال، در خارج از کلاس، می توان به آنها در کلاس های ارثی دسترسی داشت. بعداً درباره وارثیت بیشتر خواهید آموخت.



در مثال زیر، تفاوت‌های بین اعضای عمومی و خصوصی را نشان می‌دهیم:



مثال



class
MyClass {
 
public:    // Public access
specifier
    int x;   // Public attribute
 
private:   // Private access specifier
   
int y;   // Private attribute
};

int main() {
  MyClass
myObj;
  myObj.x = 25;  // Allowed (public)
  myObj.y = 50;  //
Not allowed (private)
 
return 0;
}


If you try to access a private member, an error occurs:




error: y is private





توجه: امکان دسترسی به اعضای خصوصی یک کلاس وجود دارد
با استفاده از یک متد عمومی در همان کلاس. به فصل بعدی (درپوش بندی) مراجعه کنید.
در مورد نحوه انجام این کار.


نکته: این عمل خوبی در نظر گرفته می‌شود که ویژگی‌های کلاس خود را خصوصی اعلام کنید (به عنوان
اغلب تا جایی که می توانید). این امکان را برای خود (یا دیگران) به هم ریختن کد کاهش می دهد. این هم هست
عنصر اصلی درپوش
مفهومی که در فصل بعدی بیشتر با آن آشنا خواهید شد.




توجه: به‌طور پیش‌فرض، همه اعضای یک کلاس خصوصی هستند، اگر یک مشخص‌کننده دسترسی را مشخص نکنید:



مثال



class
MyClass {
  int x;   // Private attribute
  int y;   // Private attribute
};