کنترل دسترسی به اعضا

   معرفهای دسترسی به اعضا یعنی public و private ، نحوه دسترسی به اعضای داده و توابع عضو کلاس را کنترل می کنند. حالت  پیش فرض برای دسترسی به اعضای داده و توابع عضو در کلاس private می باشد، لذا همه اعضایی که بعد از تعيين نام کلاس و قبل از اولین برچسب معرف آمده اند، خصوصی در نظر گرفته می شوند. پس از هر معرف، حالتی که معرف مربوطه تعيين می کند، به همه اعضا تا برچسب بعدی یا آکلاد بسته مربوط به پایان تعریف کلاس اعمال می شود. برچسبهای public و private را می توان چندین بار در تعریف کلاس به کار برد، اما این کار معمول نمی باشد و باعث پيچيدگی کد برنامه می شود. اعضای خصوصی یک کلاس فقط از طریق توابع عضو  آن کلاس قابل دسترسی می باشند در مقابل اعضای عمومی کلاس توسط هر تابعی در برنامه قابل دسترسی می باشند.

   برنامه زير نشان می دهد که اعضای خصوصی کلاس، خارج از کلاس قابل دسترسی نمی باشند :

#include <iostream.h>
 
class Time {
  public:
    Time();
    void setTime( int, int, int );
    void printUniversal();
    void printStandard();
 
  private:
    int hour; // 0 - 23 (24-hour clock format)
    int minute; // 0 - 59
    int second; // 0 - 59
}
 
Time::Time() 
{ 
  hour = minute = second = 0; 
}
 
void Time::setTime( int h, int m, int s )
{
  hour = ( h >= 0 && h < 24 ) ? h : 0;
  minute = ( m >= 0 && m < 60 ) ? m : 0;
  second = ( s >= 0 && s < 60 ) ? s : 0;
}
 
void Time::printUniversal()
{
  cout << (hour<10 ? "0":"") << hour << ":"
       << (minute<10 ? "0":"") << minute << ":"
       << (second<10 ? "0":"") << second;
}
 
 
void Time::printStandard()
{
  cout << ( ( hour == 0 || hour == 12 ) ?
                   12 : hour % 12 ) << ":"
       << (minute<10 ? "0":"") << minute << ":"
       << (second<10 ? "0":"") << second
       << (hour < 12 ? " AM" : " PM" );
}
 
int main()
{
  Time t; // create Time object
 
  t.hour = 7; // error: 'Time::hour' is not accessible
 
  // error: 'Time::minute' is not accessible
  cout << "minute = " << t.minute;
 
  return 0; 
}
 

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

Error in line 50: 'Time::hour' is not accessible
Error in line 53: 'Time::minute' is not accessible

 

 

 

 

 

 

   معرفی کامپيوتروبرنامه نويسی

   ساختارهای کنترلی

   توابع

   آرايه ها

   اشاره گر ها و رشته ها

   کلاسها

   گرانبار کردن عملگر ها

 
 
 
   
 
 
 

حق کپی رایت محفوظ می باشد