необходимость получения iostream из istream и ostream - PullRequest
0 голосов
/ 23 февраля 2020

при изучении I/O я сталкивался:

iostream: istream читает из потока, ostream записывает в поток, iostream читает и пишет поток: производный от istream и ostream

Зачем нужно наследование, если istream и ostream выполняют одну и ту же работу?

Ответы [ 2 ]

1 голос
/ 23 февраля 2020

Прототипами для писателя и читателя являются

class MyClass;
std::ostream& operator<< (std::ostream stream&, const MyClass &obj)
{
    obj->WriteTo(stream);
    return stream;
}

std::istream& operator>> (std::istream stream&, MyClass &obj)
{
    obj->ReadFrom(stream);
    return stream;
}

Эти функции (особенно писателя) вызывают потоковые функции более низкого уровня для MyClass членов.

Наличие std::iostream Производный от std::istream и std::ostream означает, что вы можете передать экземпляр std::iostream любой функции, и он автоматически передаст правильную часть std::iostream in.

std::istream и std::ostream статически получены из std::ios, который содержит общий код для них.

1 голос
/ 23 февраля 2020

Точно, если iostream наследовать от istream и от ostream, вы получите класс, который поддерживает ввод и вывод и оба интерфейса (из istream и ostream). Это не означает, что функциональность дублируется, это просто означает, что интерфейсы istream и ostream и их реализация используются повторно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...