指定功能级别

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