Поделиться через


Класс, производный от CObject

Данный раздел описывает шаги, необходимые минимальные класс, унаследованный от CObject.Другие статьи класса CObject описывают воспользоваться преимуществами необходимые действия конкретных функций CObject, как сериализация и создается диагностическая поддержка отладки.

На CObject терминов «встречи, файл реализации интерфейса» и «файл» часто используются.Часто Позвонимый файл интерфейса (или файлом заголовка. Файл h) содержит объявление класса и любые другие сведения, необходимые для использования класса.Файл реализации (или файл CPP) содержит определение класса, а также код, который реализует функции члена класса.Например, для класс с именем CPerson обычно создать файл с именем интерфейса PERSON.H и файл реализации с именем PERSON.CPP.Однако для нескольких небольших классов, которые не будут совместно использоваться между приложениями, иногда проще использовать интерфейс и реализацию в единый файл CPP.

Можно выбрать один из 4 уровней производный класс от функциональных возможностей CObject:

  • Базовая функциональность. Отсутствует поддержка для данных или сериализации среды выполнения класса, но не включает диагностические управления памятью.

  • Базовая функциональность плюс поддержку для данных времени выполнения класса.

  • Базовая функциональность плюс поддержку для данных времени выполнения класса и динамического создания.

  • Базовая функциональность плюс поддержку для данных времени выполнения класса динамического создания и сериализации.

Классы, разработанные для повторного использования (тех, далее будет служить базовых классов), должны по крайней мере включить поддержку среды выполнения и поддержку сериализации, если будущая необходимость сериализации предвидится.

Выбран уровень функциональных возможностей с помощью объявления и реализации специальных макросов в объявлении и реализации классов наследовании от CObject.

Следующая таблица показывает связь между, используемых макросов к данным о сериализации и среды выполнения.

Макросы, используемые для сериализации и среды выполнения

Используется макрос

CObject::IsKindOf

CRuntimeClass::

CreateObject

CArchive::operator>>

CArchive::operator<<

Основная функциональность CObject

Нет

Нет

Нет

DECLARE_DYNAMIC

Да

Нет

Нет

DECLARE_DYNCREATE

Да

Да

Нет

DECLARE_SERIAL

Да

Да

Да

Использовать базовую функциональность CObject

  • С помощью обычного синтаксиса C++, чтобы наследовать класс от CObject (или класса, производного от CObject).

    Следующий пример показывает самое простое случае вывод класса из CObject:

    class CSimple : public CObject
    {
       // add CSimple-specific members and functions...
    };
    

Как правило, однако может возникнуть необходимость переопределения некоторых функций-членов entity_CODECObject для обработки особенности нового класса.Например, может потребоваться переопределять обычно функция DumpCObject, чтобы обеспечить выходные данные отладки для содержимого класса.Дополнительные сведения о том, как переопределить Dump см. в статье Устранение неполадок. Сбрасывать содержимое объекта.Может также потребоваться переопределить функцию AssertValidCObject для обеспечения настраиванное проверка, чтобы проверить согласованность элементов данных объектов класса.Описание, как переопределить AssertValid см. в разделе MFC ASSERT_VALID и CObject::AssertValid.

Статья Указание уровни возможностей описывает, как указать другие уровни возможностей, включая данные во время создания динамического объекта класса и сериализации.

См. также

Основные понятия

Использование CObject