Иногда функция вывода должна быть 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;
Канал с обзорами, анонсами новинок и книжными подборками
Бот для удобного поиска книг (если не нашлось на сайте)
Свежие любовные романы в удобных форматах
О психологии, саморазвитии и личностном росте
Детективы и триллеры, все новинки
Фантастика и фэнтези, все новинки
Отборные классические книги
Библиотека с любовными романами, которая наверняка придётся по вкусу женской части аудитории
Библиотека с фантастикой и фэнтези, а также смежных жанров
Самые популярные книги в формате фб2