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