ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 12) онлайн
Иерархия потоковых классов
Потоковые классы имеют довольно сложную иерархическую структуру. На рис. 12.1
показана организация важнейших из них.
Мы уже встречались с использованием некоторых потоковых классов. Опе-
рация извлечения >> является методом класса istream, операция вставки << —
методом класса ostream. Оба этих класса являются наследниками ios. Объект
cout, представляющий собой стандартный выходной поток, который обычно вы-
водит на экран данные, является предопределенным объектом класса ostream_
withassign, являющегося наследником класса ostream. Аналогично, cin — объект
istream_withassign, наследника istream.
Классы, используемые для вывода данных на экран и ввода с клавиатуры,
описаны в заголовочном файле IOSTREAM, который мы всегда подключали в на-
ших примерах из предыдущих глав. Классы, используемые для ввода/вывода
файлов, объявлены в файле FSTREAM. На рис. 12.1 видно, в каких заголовочных
файлах что хранится. (К сказанному можно добавить, что некоторые манипу-
ляторы описаны в IOMANIP, а некоторые классы для работы с объектами «в па-
мяти» определены в STRSTREAM.) В качестве полезного упражнения можно рас-
печатать эти заголовочные файлы и проследить взаимоотношения различных
IOSTREAM FSTREAM
Рис. 12.1. Иерархия потоковых классов
На рис. 12.1 видно, что класс ios является базовым для всей иерархии. Он
содержит множество констант и методов, общих для операций ввода/вывода
любых видов. Некоторые из них, такие, как флаги форматирования showpoint и
fixed, мы уже встречали. В классе ios есть также указатель на класс streambuf,
значением которого является адрес текущего буфера памяти. С помощью буфе-
ра производится обмен данными (запись или чтение). Кроме того, ios содержит
некоторые низкоуровневые программы для обработки этих данных. В обычной
ситуации вам не нужно заботиться о классе streambuf, обращение к которому из
других классов происходит автоматически.
Классы istream и ostream являются наследниками ios и предназначены для
ввода и вывода соответственно. Класс istream содержит такие функции, как get(),
getline(), read() и перегружаемую операцию извлечения (>>), тогда как класс
ostream содержит функции put(), write() и перегружаемую операцию вставки (<<).
Класс iostream — наследник одновременно классов istream и ostream (пример
множественного наследования). Его производные классы могут использоваться
классов. Файлы хранятся в директории INCLUDE вашего компилятора. При
изучении хранящихся в этих файлах классов можно найти ответы на многие
вопросы, касающиеся потоков.
при работе с такими объектами, как дисковые файлы, которые могут быть откры-
ты одновременно для записи и чтения. Три класса — istream_withassign, ostream_
withassign и iostream_withassign — являются наследниками istream, ostream и iostream
соответственно. Они добавляют к этим классам операторы присваивания.
Приведенный ниже свод классов может показаться довольно абстрактным.
Его можно пока пропустить, чтобы вернуться к нему при осуществлении каких-
либо конкретных действий с использованием потоков.
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
Схожі підручники
- конспект з курсу Філософія
- Мікро економіка. План семінарських
- Продажи и управление продажами Учеб. пособие для вузов (часть 4) (онлайн)
- ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 2) онлайн
- Управління проектами (частина 1)
- НАВЧАЛЬНИЙ ПОСІБНИК ГРОШІ ТА КРЕДИТ теорія і практика (частина 2)