Наследование класса от 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... };
Как правило, однако может потребоваться переопределить некоторые функции-члены CObject для обработки для нового класса. Например, может потребоваться переопределить обычно функция DumpCObject для предоставления выходные данные отладки для содержимого класса. Дополнительные сведения о том, как переопределить Dump см. в статье Диагностика: Сохранение содержимого объекта. Кроме того, можно переопределить функцию AssertValidCObject для предоставления настраиванное тестирование, чтобы проверить согласованность элементов данных объектов класса. Описание, как переопределить AssertValid см. в разделе ASSERT_VALID MFC и CObject::AssertValid.
Раздел Определение слои функциональности описывает, как указать другие слои функциональности, включая данные класса среды выполнения, динамическое создание объектов и сериализации.