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