کلاس تو در تو (Nested Class)

++C به برنامه نویسان اجازه می‌دهد تا یک کلاس را داخل کلاسی دیگر تعریف کنند. به این کلاس‌ها، nested کلاس نیز گفته می‌شود. زمانی که کلاس B داخل کلاس A تعریف می‌شود، کلاس B نمی‌تواند به اعضای کلاس A دسترسی داشته باشد ولی کلاس A می‌تواند به اعضای کلاس B از طریق یک شیء از آن دسترسی داشته باشد. ویژگی‌های یک کلاس تو در تو عبارتند از:

  • یک کلاس تو در تو داخل یک کلاس دیگر تعریف می‌شود
  • محدوده یا میدان دیدن کلاس داخلی در scope کلاس بیرونی است.
  • برای تعریف یک شیء از کلاس داخلی، باید نام کلاس بیرونی به همراه عملگر (‌::) پشت آن قرار بگیرد.

برنامه زیر نحوه استفاده از کلاس‌های تو در تو را نشان می‌دهد:

  1: #include <iostream>
  2: #include <string>
  3: using namespace std;
  4: 
  5: class Student
  6: {
  7:     private:
  8:         int Age;
  9: 
 10:     public:
 11:         class Name                    
 12:         {                             
 13:             private:                  
 14:                 string name;          
 15:                                       
 16:             public:                   
 17:                 string getName()      
 18:                 {                     
 19:                     return name;      
 20:                 }                     
 21:                 void setName(string n)
 22:                 {                     
 23:                     name = n;         
 24:                 }                     
 25:         };                            
 26: };
 27: 
 28: int main()
 29: {
 30:     Student::Name n;
 31: 
 32:     n.setName("John");
 33:     cout << "Name is : " << n.getName() << endl;
 34: }
Name is : John