в cout) происходит следующая п

Автор admin Пятница, 15 мая 2009 11:32

в cout) происходит следующая последовательность вызовов: cout.operator«(nl) ® nl(cout) Показанное ниже выражение внутри nl() вызывает операторную функцию ostream::operator(char): OS « ‘\n’; Поток, возвращаемый этой функций, в конечном счете возвращается манипулятором nl1. Эффекторы Итак, манипуляторы без аргументов создаются легко. А если вам нужен манипулятор с аргументами? Просматривая заголовок , вы найдете тип smanip, возвращаемый манипуляторами с аргументами. Возникает предположение, что этот тип нужно использовать при определении собственных манипуляторов, но делать этого не стоит. Тип smanip зависит от реализации, а его использование нарушает переносимость программы. К счастью, манипуляторы с аргументами можно определять без применения специальных трюков. Для этой цели Джерри Шварц (Jerry Schwarz)2 предложил методику, основанную на применении эффекторов. Эффектор представляет собой класс с конструктором и перегруженным оператором «. Конструктор форматирует строку, представляющую нужную операцию, а оператор « направляет эту строку в поток. Здесь приводятся два эффектора: первый выводит ус


Комментарии закрыты.