Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Библиотека классов Microsoft Foundation (MFC) продолжает поддерживаться. Однако мы больше не добавляем функции или обновляем документацию.
В этой статье объясняется механизм сериализации, предоставляемый в библиотеке классов Microsoft Foundation (MFC), чтобы разрешить объектам сохраняться между выполнением программы.
Сериализация — это процесс записи или чтения объекта в носитель постоянного хранилища, например файл диска. Сериализация идеально подходит для ситуаций, когда требуется сохранить состояние структурированных данных (например, классов или структур C++) во время или после выполнения программы. Использование объектов сериализации, предоставляемых MFC, позволяет выполнять это в стандартном и согласованном режиме, освобождая пользователя от необходимости выполнять операции с файлами вручную.
MFC предоставляет встроенную поддержку сериализации в классе CObject. Таким образом, все классы, производные от CObject, могут воспользоваться протоколом сериализации CObject.
Основная идея сериализации заключается в том, что объект должен иметь возможность записывать текущее состояние, обычно указываемое значением переменных-членов, в постоянное хранилище. Позже объект можно повторно создать, считывая или десериализуя его состояние из хранилища. Сериализация обрабатывает все сведения указателей объектов и циклические ссылки на объекты, используемые при сериализации объекта. Ключевой момент заключается в том, что сам объект отвечает за чтение и запись собственного состояния. Таким образом, чтобы класс был сериализуемым, он должен реализовать основные операции сериализации. Как показано в группе статей сериализации, легко добавить эту функцию в класс.
MFC использует объект CArchive класса в качестве посредника между объектом для сериализации и носителя хранилища. Этот объект всегда связан с CFile объектом, из которого он получает необходимые сведения для сериализации, включая имя файла и то, является ли запрошенная операция чтением или записью. Объект, выполняющий операцию сериализации, может использовать CArchive объект без учета характера носителя хранилища.
Объект CArchive использует перегруженные операторы вставки (<<) и извлечения (>>) для выполнения операций записи и чтения. Дополнительные сведения см. в разделе "Хранение и загрузка CObjects" с помощью архива в статье Сериализация: сериализация объекта.
Замечание
Не путайте CArchive класс с классами iostream общего назначения, которые предназначены только для отформатированного текста. Класс CArchive предназначен для сериализованных объектов в двоичном формате.
Если вы хотите, можно обойти сериализацию MFC, чтобы создать собственный механизм для постоянного хранения данных. Необходимо переопределить функции-члены класса, которые инициируют сериализацию по требованию пользователя. См. обсуждение в Техническом примечании 22 стандартных команд ID_FILE_OPEN, ID_FILE_SAVE и ID_FILE_SAVE_AS.
В следующих статьях рассматриваются две основные задачи, необходимые для сериализации:
В статье сериализация: сериализация и выход базы данных описывает, когда сериализация является соответствующим методом ввода и вывода в приложениях базы данных.
См. также
Основные понятия
Общие разделы MFC
Класс CArchive
Класс CObject
Класс CDocument
Класс CFile