指定功能级别

本文介绍如何将以下级别的功能添加到 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 派生类