Основные потоковые классы и объекты. Иерархия потоковых классов

   
На этом шаге мы приведеи иерархию потоковых классов и дадим им краткую характеристику.

   
Потоковые классы библиотеки IOStream образуют иерархию, изображенную на рисунке 1. Для шаблонных классов в верхней строке указано
имя шаблона, а в нижней - имена специализаций для типов char и wchar_t.


Рис.1. Иерархия основных потоковых классов

   
Ниже перечислены задачи, решаемые классами этой иерархии.

  • Базовый класс ios_base определяет свойства всех потоковых классов, не зависящие от типа и трактовок символов. Класс в основном
    состоит из компонентов и функций, предназначенных для управления состоянием и флагами формата.
  • Шаблон класса basic_ios<>, производный от ios_base<>, определяет общие свойства всех потоковых классов,
    зависящие от типа и трактовок символов. В число этих свойств входит определение буфера, используемого потоком данных. Буфер представлен
    объектом класса, производным от базового класса basic_streambuf<>, с соответствующей специализацией. Фактически именно он
    выполняет операции чтения/записи.
  • Шаблоны basic_istream<> и basic_ostream<>, виртуально производные от basic_ ios<>, определяют
    объекты, которые могут использоваться соответственно для чтения и записи. Эти классы, как и basic_ios<>, оформлены в виде шаблонов,
    параметризованных по типу и трактовкам символов. Если проблемы интернационализации несущественны, задействуются специализации этих классов
    для типа символов char (а именно istream и ostream).
  • Шаблон basic_iostream<> является производным от двух шаблонов - basic_ istream<> и basic_ostream<>.
    Он определяет объекты, которые могут использоваться как для чтения, так и для записи.
  • Шаблон basic_streambuf<> занимает центральное место в библиотеке IOStream. Он определяет интерфейс всех
    представлений, записываемых в потоки данных или читаемых из потоков данных, и используется другими потоковыми классами для фактического
    чтения или записи символов. Для получения доступа к некоторым внешним представлениям классы объявляются производными от basic_streambuf<>.
    Подробности приведены в следующих шагах.

   
На следующем шаге мы рассмотрим назначение потоковых буферных классов.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий