Сильно типизированная библиотека
Библиотека iostream сильно типизирована. Например, попытка прочитать из объекта класса ostream или записать в объект класса istream помечается компилятором как нарушение типизации. Так, если имеется набор объявлений:
#include <iostream>
#include <fstream>
class Screen;
extern istream& operator>>( istream&, const Screen& );
extern void print( ostream& );
ifstream inFile;
то следующие две инструкции приводят к нарушению типизации, обнаруживаемому во время компиляции:
int main()
{
Screen myScreen;
// ошибка: ожидается ostream&
print( cin >> myScreen );
// ошибка: ожидается оператор >>
inFile << "ошибка: оператор вывода";
Средства ввода/вывода включены в состав стандартной библиотеки C++. В главе 20 библиотека iostream описана не полностью, в частности вопрос о создании определенных пользователем манипуляторов и буферных классов остался за рамками введения в язык. Мы сосредоточили внимание лишь на той части библиотеки iostream, которая имеет основополагающее значение для программного ввода/вывода.