Почему некоторые классы MFC не являются производными от CObject? - PullRequest
2 голосов
/ 07 апреля 2010

Обычно большая часть MFC (оконных классов) получена из CObject. Что делает CObject? Почему некоторые классы MFC не обязаны быть производными от CObject?

Ответы [ 2 ]

4 голосов
/ 07 апреля 2010

Согласно MSDN CObject в основном обеспечивает следующие функции:

  • Поддержка сериализации
  • Информация о классе времени выполнения
  • Вывод диагностического объекта
  • Совместимость с классами коллекций

Таким образом, когда ничего из этого не требуется, нет необходимости выводить из CObject.
При извлечении из CObject также требуется некоторое количество служебных данных (DECLARE/IMPLEMENENT_SERIAL/DYNAMIC макросов), поэтому могут быть более простые способы выполнения действий, чем при CObject.

3 голосов
/ 07 апреля 2010

Документация MFC охватывает это довольно хорошо. Документация для CObject описывает, что он делает (поддержка сериализации, информация о классе времени выполнения и т. Д.).

Иерархическая диаграмма является хорошим обзором и показывает, какие классы не являются производными от CObject.

Можно сделать вывод, что классы, которые не являются производными от CObject, - это те, которым не нужны предоставляемые им сервисы. Причины разные: например, класс типа CFileTime - это простой тип данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...