Материалы книги получены с http://www.itlibitum.ru/
Производящие функции и объекты классов
В предыдущей главе мы столкнулись с гомоморфными иерархиями классов и с головой погрузились во множественную передачу. В этой главе мы продолжим исследовать царство иерархий классов, рассматривая объекты классов и сопутствующие темы.
Примеры из предыдущей главы обладали одним недостатком - все производные классы были видны клиентам. Но если производные классы погребены в файлах .cpp на глубине нескольких метров, как клиенту создавать экземпляры этих спрятанных классов? Этой теме посвящено начало главы.
Производящей функцией (factory function) называется функция, которая инкапсулирует применение оператора new для создания экземпляров класса. Знатоки С++ обычно сходятся на том, что производящие функции - Хорошая Вещь, и вскоре вы поймете почему. Вы оказались на семинаре с коктейлями и хотите найти хорошую тему для разговора? Поднимите стакан и небрежно упомяните о том, как производящие функции выручили вас в трудную минуту.
Во многих программах нам хотелось бы в процессе их выполнения сделать нечто, не поддерживаемое динамической моделью С++ (например, запросить у объекта его класс). Для этой цели существует предложенный стандарт RTTI (Run Time Type Information, Динамическая информация о типе), но по причинам, о которых будет сказано ниже, его вряд ли можно считать универсальным или хотя бы полезным средством. Вместо этого мы рассмотрим нестандартные решения, основанные на концепции объектов классов, в том числе особый случай - представителей классов.
Назад Содержание Далее
|