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


Наследование класса от CObject

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

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

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

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

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

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

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

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

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

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

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

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

CreateObject
CArchive::operator>>

CArchive::operator<<
Основные CObject функциональные возможности No No No
DECLARE_DYNAMIC Да No No
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