Наследование класса от 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
Используйте обычный синтаксис 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.
В статье "Определение уровней функциональности" описывается, как указать другие уровни функциональности , включая сведения о классе во время выполнения, создание динамических объектов и сериализацию.