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


Наследование класса от 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.

Раздел Определение слои функциональности описывает, как указать другие слои функциональности, включая данные класса среды выполнения, динамическое создание объектов и сериализации.

См. также

Основные понятия

Использование CObject