حوزه کلاس و دسترسی به اعضای کلاس

   اعضای داده يک کلاس (متغيرهايی که در کلاس تعريف شده اند ) و توابع عضو کلاس ( توابعی که در کلاس تعريف گرديده ا ند ) به حوزه اين کلاس متعلق می باشند و توابعی که عضو کلاس نمی باشند، دارای حوزه فايل می باشند.

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

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

   متغيرهايی که در يک تابع عضو کلاس تعريف شده اند، دارای حوزه تابع می باشند، یعنی فقط برای همان تابع شناخته شده اند. اگر در تابع عضوی، متغيری همنام با نام متغيری که دارای حوزه کلاس است تعريف شده باشد، در اين صورت متغيری که دارای حوزه کلاس می باشد در داخل تابع به طور مستقيم نمی توان رجوع کرد و برای دسترسی به آن بايد عملگر تفکيک حوزه (::) را قبل از نام متغير قرار داد.

   در برنامه زير يک کلاس ساده به نام Count با يک عضو داده عمومی از نوع int به نام x و يک تابع عضو عمومی به نام print ، تعريف شده است. در اين برنامه دو شیء از نوع کلاس Count به نامهای counter و countPtr ( اشاره گری به يک شیء Count ) تعريف شده اند که متغيرcountPtr به counter اشاره داده شده است. لازم به ذکر است که عضو داده x فقط برای اين به صورت عمومی تعريف شده که نحوه دسترسی به اعضای عمومی را نشان دهيم. همان طور که قبلا ذکر کرديم، اعضای داده ای معمولاً به صورت خصوصی اعلان می شوند . به برنامه زير توجه کنيد :

#include <iostream.h>
 
class Count {
 
  public:
     int x;
 
     void print() 
     { 
      cout << x << endl; 
     }
};
 
void main()
{
  Count counter; 
  Count *counterPtr = &counter;
 
  cout << "Assign 1 to x and print "
       << "using the object's name: ";
  counter.x = 1; 
  counter.print();
 
  cout << "Assign 3 to x and print using a pointer: ";
  counterPtr->x = 3;
  counterPtr->print();
}

   خروجی برنامه فوق به صورت زير می باشد:

Assign 1 to x and print using the object's name: 1
Assign 3 to x and print using a pointer: 3

 

 

 

 

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

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

   توابع

   آرايه ها

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

   کلاسها

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

 
 
 
   
 
 
 

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