Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > 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, Респект! |
Автор: EvilsInterrupt 3.3.2013, 15:34 | ||
А я то искал хоть один пример для пояснения этого правила, а он у меня под носом был ))) |