Материалы книги получены с http://www.itlibitum.ru/
Производящие функции
Предположим, вы согласились, что гомоморфизм - это хорошо, и тут же сотворили свою собственную гомоморфную иерархию классов.
// В файле Grandpa.h
class Grandpa { ... };
// Скрыто в файле Grandpa.cpp
class Dad : public Grandpa { ... };
class AuntieEm : public Grandpa { ... };
// Где-то в нашей программе
#include "Grandpa.h"
Grandpa* g = new ... // Стоп! Как создать «папу»?
Допустим, с позиций биологии все понятно, но мы говорим о С++, не правда ли? Проблема
заключается в том, что мы надежно изолировали «папу» (Dad) от внешнего мира - по крайней мере для любого кода, расположенного за пределами файла Grandpa.cpp. Замечательный интерфейс Grandpa позволяет нам как угодно манипулировать любым экземпляром производного класса, включая Dad, но при это не существует способа создать этот экземпляр!
Назад Содержание Далее
|