Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Для чего нужны istream, ostream если есть iostream


Автор: EvilsInterrupt 3.3.2013, 11:55
Никогда не понимал причину деления на три типа стримов input, output, input-output . Для чего это деление нужно? Ведь если хочется избежать порчи данных в источнике, вполне можно открыть iostream с правами только для чтения. Если же надо только и только записывать тоже можно открыть iostream только для записи.

Зачем нужно делить стримы на эти три версии, когда вполне хватит одной io-версии?

Автор: Zmaster555 3.3.2013, 13:53
Думаю, что для корректной организации механизмов наследования и полиморфизма.

Автор: Alexeis 3.3.2013, 14:34
  Думаю для порядка нужно. Смотришь объяву класса, а там ostream и сразу понятно назначение объекта. Еще название сделать толковое и даже коменты не нужны. 

Автор: Amp 3.3.2013, 15:07
Если поток не поддерживает ввод или вывод, а объявлен как IO - это же нелогично и, как следствие, введет пользователей в заблуждение, испортив API библиотеки. Плюс это дополнительный способ прострелить ногу, которых в плюсах итак предостаточно. Открыли вы, например, поток только на чтение, чтобы избежать порчи данных, а завтра Вася в наследнике вашего класса переопределяет метод get_input_stream() и забывает выставить нужные флаги возвращаемому потоку. И приплыли. Не стоит сильно полагаться внимательность людей. Если есть возможность принудить их к написанию корретного и логичного кода, то лучше ее использовать.

Автор: EvilsInterrupt 3.3.2013, 15:12
Alexeis, Ок. Этот довод могу понять ) Это единственная причина?

Автор: EvilsInterrupt 3.3.2013, 15:32
Amp, Респект!

Автор: NoviceF 3.3.2013, 15:33
Цитата(Amp @  3.3.2013,  16:07 Найти цитируемый пост)
Если есть возможность принудить их к написанию корретного и логичного кода, то лучше ее использовать.


как говорил Мэйерс, "Проектируйте интерфейсы так, что их легко было использовать правильно и трудно – неправильно"  smile 

Автор: EvilsInterrupt 3.3.2013, 15:34
Цитата(NoviceF @  3.3.2013,  16:33 Найти цитируемый пост)
как говорил Мэйерс, "Проектируйте интерфейсы так, что их легко было использовать правильно и трудно – неправильно"    

А я то искал хоть один пример для пояснения этого правила, а он у меня под носом был )))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)