Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lect09.pdf
Скачиваний:
5
Добавлен:
06.02.2016
Размер:
492.28 Кб
Скачать

Вложенные классы

ЯзыкC++ позволяетразместить объявлениеодногокласса(илидругого типаданных)внутриобъявления другого.

Этополезно, когда вложенный тип данных, восновном, используется лишь внешним классом или совместно с ним. Пример-

итераторы стандартных контейнеров STL

Использованиевложенного класса

Изметодов внешнего класса– поимени вложенного класса.

Формальновложенныйклассэто тип, объявленныйвобластивидимостидругого класса.Поэтомувнейонпростодоступен.

Снаружи– припомощиуказанияименивнешнего

класса.

Доступко именамвложенныхклассовосуществляетсякаки клюбымдругимименамвнутриобластивидимостикласса:

ExternalClass::NestedClass

Пример

class External { public:

class Nested { public:

void Foo(){}

};

private:

void Bar() {

//из области видимости класса

//можем обращаться по имени

Nested nObj; nObj.Foo();

}

};

Пример

int main(int argc, char* argv[]) {

//Из внешней функции обращаемся, используя

//операцию расширения области видимости

External::Nested nObj2; nObj2.Foo();

return 0;

}

ИдиомаPIMPL

PIMPL - Pointer to private IMPLementation.

PIMPL - идиома программирования, заключающаяся в разделении интерфейса класса и его реализации сиспользованием отдельного закрытого класса или просто закрытогоуказателя накласс.

Шуточноеназвание "Чеширский кот": мы фактически имеем "улыбку без кота"- интерфейс находится в классе, а реализация отнего отделена.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]