Класс, производный от 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.
Статья Указание уровни возможностей описывает, как указать другие уровни возможностей, включая данные во время создания динамического объекта класса и сериализации.