【问题标题】:Why some MFC classes are not derived from CObject?为什么有些 MFC 类不是从 CObject 派生的?
【发布时间】:2010-04-07 09:50:17
【问题描述】:

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

【问题讨论】:

    标签: mfc visual-c++


    【解决方案1】:

    根据MSDNCObject主要提供了这些功能:

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

    所以当这些都不需要时,就没有必要从CObject派生。
    CObject 派生时也涉及一些开销(DECLARE/IMPLEMENENT_SERIAL/DYNAMIC 宏),因此可能有比从CObject 派生更简单的方法。

    【讨论】:

      【解决方案2】:

      MFC 文档很好地涵盖了这一点。 CObject 的文档描述了它的作用(序列化支持、运行时类信息等)。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-04-08
        • 1970-01-01
        • 1970-01-01
        • 2011-06-17
        • 1970-01-01
        • 2013-10-26
        • 1970-01-01
        相关资源
        最近更新 更多