Материалы книги получены с http://www.itlibitum.ru/
Основные концепции
Если гомоморфизм хорошо подходит для других классов, значит, он подойдет и для указателей.
Концепция проста: указатель и указываемый объект порождаются от одного и того же чисто
абстрактного базового класса.
class Foo {
public:
virtual void do_something() = 0;
virtual void do_something_else() = 0;
};
class PFoo : public Foo {
private:
Foo* foo;
public:
virtual void do_something() { foo->do_something(); }
virtual void do_something_else() { foo->do_something_else(); }
};
class Bar : public Foo {
// Все для производного класса
};
Вместо перегрузки оператора -> в PFoo используется делегирование. Приведенный фрагмент лишь слегка затрагивает данную тему. На практике приходится учитывать множество деталей, начиная с того, как скрыть указатели и указываемые объекты от клиентов.
Назад Содержание Далее
|