Рубрики

Вложенные классы в C ++

Вложенный класс — это класс, который объявлен в другом включающем классе. Вложенный класс является членом и поэтому имеет те же права доступа, что и любой другой член , Члены включающего класса не имеют специального доступа к членам вложенного класса; должны соблюдаться обычные правила доступа.

Например, программа 1 компилируется без каких-либо ошибок, а программа 2 не скомпилируется.

Программа 1

#include<iostream>

  

using namespace std;

  

 / * начало объявления класса Enclosing * /  

class Enclosing {      

   private:   

       int x;

     

   / * начало объявления вложенного класса * /  

   class Nested {

      int y;   

      void NestedFun(Enclosing *e) {

        cout<<e->x;  // работает нормально: вложенный класс может получить доступ

                     // закрытые члены класса Enclosing

      }       

   }; // Объявление вложенного класса заканчивается здесь

}; // объявление Класс вложения заканчивается здесь

  

int main()

{     

  
}

Программа 2

#include<iostream>

  

using namespace std;

  

 / * начало объявления класса Enclosing * /  

class Enclosing {      

        

   int x;

     

   / * начало объявления вложенного класса * /  

   class Nested {

      int y;   

   }; // Объявление вложенного класса заканчивается здесь

  

   void EnclosingFun(Nested *n) {

        cout<<n->y;  // Ошибка компилятора: y является частным в Nested

   }      

}; // объявление Класс вложения заканчивается здесь

  

int main()

     
}

Ссылки:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1905.pdf

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Вложенные классы в C ++

0.00 (0%) 0 votes