为什么有些MFC类不是从CObject派生的?

时间:2010-04-07 09:50:18

标签: mfc visual-c++

通常,大多数MFC(基于窗口的类)都是从CObject派生的。 CObject做什么? 为什么不需要从CObject派生某些MFC类?

2 个答案:

答案 0 :(得分:4)

根据MSDN CObject主要提供以下功能:

  • 序列化支持
  • 运行时类信息
  • 对象诊断输出
  • 与集合类的兼容性

因此,如果不需要这些,则无需从CObject派生 从DECLARE/IMPLEMENENT_SERIAL/DYNAMIC派生时也会涉及一些开销(CObject宏),因此可能有更简单的方法,而不是从CObject派生。

答案 1 :(得分:3)

MFC文档非常清楚。 CObject的文档描述了它的作用(序列化支持,运行时类信息等)。

Hierarchy Chart是一个很好的概述,并显示哪些类不是从CObject派生的。

您可以得出结论,不从CObject派生的类是不需要它提供的服务的类。原因是多种多样的:例如像CFileTime这样的类是一种简单的数据类型。