为啥有些 MFC 类不是从 CObject 派生的?
Posted
技术标签:
【中文标题】为啥有些 MFC 类不是从 CObject 派生的?【英文标题】:Why some MFC classes are not derived from CObject?为什么有些 MFC 类不是从 CObject 派生的? 【发布时间】:2010-04-07 09:50:17 【问题描述】:通常大多数 MFC(基于窗口的类)都是从 CObject 派生的。 CObject 是做什么的? 为什么有些 MFC 类不需要从 CObject 派生?
【问题讨论】:
【参考方案1】:根据MSDNCObject
主要提供了这些功能:
所以当这些都不需要时,就没有必要从CObject
派生。
从CObject
派生时也涉及一些开销(DECLARE/IMPLEMENENT_SERIAL/DYNAMIC
宏),因此可能有比从CObject
派生更简单的方法。
【讨论】:
【参考方案2】:MFC 文档很好地涵盖了这一点。 CObject 的文档描述了它的作用(序列化支持、运行时类信息等)。
Hierarchy Chart 是一个很好的概述,它显示了哪些类不是从 CObject 派生的。
您可以得出结论,不是从 CObject 派生的类是不需要它提供的服务的类。原因是多方面的:例如像 CFileTime 这样的类是一个简单的数据类型。
【讨论】:
以上是关于为啥有些 MFC 类不是从 CObject 派生的?的主要内容,如果未能解决你的问题,请参考以下文章
错误 C2248:“CObject::CObject”:当我在 MFC 中调用 hDC.SelectObject 函数时,无法访问在“CObject”类中声明的私有成员