[MFC]-01-CObject的特性,运行时类信息等

    Run-time Class Information,运行时类信息,就是获取并判断一个对象的类型。在以下场景下使用:

    1.如果要对函数需要的参数类型做额外的类型检查。

    2.需要根据对象的类型来写对应的处理代码。

    要使一个类具有运行时类信息的特性,则这个类必须是从 CObject 派生出来的。并且使用相关的宏(DECLARE_DYNAMIC和 IMPLEMENT_DYNAMIC, DECLARE_DYNCREATE和IMPLEMENT_DYNCREATE,DECLARE_SERIAL和IMPLEMENT_SERIAL)来启用运行时类信息功能。


    获取运行时类信息是通过 CObject类的 成员函数 IsKindOf() 函数完成的。 例如:

//判断一个 CPerson的对象 myPerson,的类型
CObject *pObjTest = new CPerson;
if(pObjTest != NULL && 
    pObject->IsKindOf(RUNTIME_CLASS(CPerson)) // 判断pObject所指的对象,是否为 CPerson类型。
{
    CPerson* pmyPerson = (CPerson*)pObjTest;
    pmyPerson->AssertValid();
    // ....
    ...
}

    Serialization,序列化,是向磁盘文件写入或读取对象(或者结构体)。

    序列化用在,需要维护数据结构(C++类,或结构体)的状态的情景。

    对象自己负责读取和写入自己的状态, 即必须自己实现基本的序列化操作。

    MFC使用 CArchive类的对象作为需要被序列化的对象和存储媒介的中间层。


    CRuntimeClass,是一个结构体,每个从CObject类派生的对象都由一个与之相关的CRuntimeClass结构体。可以通过它在运行时来获取这个对象或者它的基类的运行时信息。


你可能感兴趣的:([MFC]-01-CObject的特性,运行时类信息等)