|
||||
|
8.2.5 Виртуальная Функция Вывода Иногда функция вывода должна быть virtual. Рассмотрим пример класса shape, который дает понятие фигуры (#1.18): class shape (* // ... public: // ... virtual void draw(ostream amp; s); // рисует «this» на "s" *); class circle : public shape (* int radius; public: // ... void draw(ostream amp;); *); То есть, круг имеет все признаки фигуры и может обрабтываться как фигура, но имеет также и некоторые специальные свойства, которые должны учитываться при его обработке. Чтобы поддерживать для таких классов стандартную пардигму вывода, операция «« определяется так: ostream amp; operator«„(ostream amp; s, shape* p) (* p-“draw(s); return s; *) Если next – итератор типа определенного в #7.3.3, то список фигур распечатывается например так: while ( p = next() ) cout «« p; |
|
||