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


Извлечение класса из CObject

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

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

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

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

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

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

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

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

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

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

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

Используемый макрос CObject::IsKindOf CRuntimeClass::

CreateObject
CArchive::operator>>

CArchive::operator<<
Основные CObject функциональные возможности нет нет нет
DECLARE_DYNAMIC Да нет нет
DECLARE_DYNCREATE Да Да нет
DECLARE_SERIAL Да Да Да

Использование основных функций CObject

  1. Используйте обычный синтаксис C++, чтобы производить ваш класс от CObject (или от класса, производного от CObject).

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

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

Однако обычно может потребоваться переопределить некоторые функции-члены CObject, чтобы обрабатывать особенности нового класса. Например, обычно вы можете захотеть переопределить функцию Dump, чтобы предоставить результаты отладки для содержимого вашего класса CObject. Дополнительные сведения о переопределении Dumpсм. в статье "Настройка дампа объектов". Также может потребоваться переопределить AssertValid функцию CObject, чтобы предоставить настраиваемое тестирование для проверки согласованности членов данных объектов класса. Описание переопределения AssertValidсм. в разделе MFC ASSERT_VALID и CObject::AssertValid.

В статье "Определение уровней функциональности " описывается, как указать другие уровни функциональности, включая сведения о классе во время выполнения, создание динамических объектов и сериализацию.

См. также

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