指定功能级别

本文介绍如何添加以下级别功能以 CObject派生类:

  • 运行时类的信息

  • 动态创建支持

  • 序列化支持

有关 CObject 函数的概述,请参阅文章 从派生类 CObject

添加运行时类信息

  1. CObject派生类,如 从派生类 CObject 文章所述。

  2. 类声明使用 DECLARE_DYNAMIC 宏,如下所示:

    class CPerson : public CObject 
    {
       DECLARE_DYNAMIC( CPerson )
    
       // other declarations
    };
    
  3. 实现文件 (.cpp) 类使用 IMPLEMENT_DYNAMIC 宏。 此宏将用作参数类及其基类的名称,如下所示:

    IMPLEMENT_DYNAMIC( CPerson, CObject )
    

备注

为类请始终将 IMPLEMENT_DYNAMIC 放在一实现文件 (.cpp)。应一次仅在编译时计算 IMPLEMENT_DYNAMIC 宏,因此不应使用在多个文件有可能覆盖的接口文件(.H)。

添加动态创建支持

  1. CObject 派生你的类。

  2. 类声明使用 DECLARE_DYNCREATE 宏。

  3. 定义无参构造函数(默认的构造函数)。

  4. 类实现文件使用 IMPLEMENT_DYNCREATE 宏。

添加序列化支持

  1. CObject 派生你的类。

  2. 重写 Serialize 成员函数。

    备注

    如果直接调用 Serialize ,不希望通过多态指针序列化对象,省略步骤 3 到 5。.

  3. 类声明使用 DECLARE_SERIAL 宏。

  4. 定义无参构造函数(默认的构造函数)。

  5. 类实现文件使用 IMPLEMENT_SERIAL 宏。

备注

“多态指针”指向一个类(成为A)对象或从 A 派生的任何类对象 (假设,B)。通过多态指针序列化,框架必须确定它序列化 (B) 对象的运行时类,因为它可能是与一些基类(A)派生的任何类对象。

有关当从 CObject派生类时如何启用序列化的详细信息,请参阅文章 MFC 中的文件 序列化

请参见

概念

从 CObject 派生类