R Справочное руководство по С++

R.9.8 Описания локальных классов.

   


Назад  |  Вперёд

Класс можно описать в определении функции, такой класс называется локальным. Имя локального класса считается локальным в объемлющей области видимости, а областью видимости локального класса является объемлющая область видимости. В описаниях локального класса из объемлющей области видимости можно использовать только имена типов, статических переменных, внешних переменных и функций, а также элементы перечисления. Приведем пример:

           int x;
           void f()
           {
             static int s;
             int x;
             extern int g();
             struct local {
                int h() { return x; }   // ошибка: `x' автоматическая
                int j() { return s; }   // нормально
                int k() { return ::x; } // нормально
                int l() { return g(); } // нормально
             }
           }

Объемлющая функция не имеет особых прав доступа к членам локального класса, она подчиняется обычным правилам доступа ($$R.11). Функцию-член локального класса следует определять в определении этого класса. Локальный класс не может иметь статических членов, представляющих данные.


Назад  |  Вперёд


OtDiatlovaOU
К началу книги

Оформление и дизайн книги OtDiatlovaOU.
Вся книга, архив.