Some guys seem to be unsatisfied to use MFC, they prefer to use pure Win32 C++. But in some domains, MFC or similar framework will be a necessary option. The runtime class information is one of this domains.
只需要关注这两个类:CObject,CRuntimeClass
所有有这种需求的类,请都从CObject类派生,并且,从CObject类派生的类不允许多重继承。
从CObject类派生的类有四个级别:
1:诊断内存管理;直接从CObject类派生
2:诊断内存管理+运行时类信息;头文件中使用DECLARE_DYNAMIC宏;实现文件中使用IMPLEMENT_DYNAMIC宏
3:诊断内存管理+运行时类信息+动态创建;头文件中使用DECLARE_DYNCREATE宏;实现文件中使用IMPLEMENT_DYNCREATE宏
4:诊断内存管理+运行时类信息+动态创建+串行化;头文件中使用DECLARE_SERIAL宏;实现文件中使用IMPLEMENT_SERIAL宏
CObject类相关函数:
IsSerializable:对象是否能够被序列化
Serialize:序列化
GetRuntimeClass:返回与该对象有关的CRuntime结构
IsKindOf:测试该对象与一给定类的关系
CRuntimeClass类的成员
m_lpszClassName:类的名字
m_nObjectSize:对象的大小
m_pBaseClass:指向基类的CRuntimeClass结构的指针
m_pfnCreateObject:一个指向动态创建对象的函数指针
m_pfnGetBaseClass:返回CRuntimeClass结构
m_wSchema:类的版本号
CreateObject:在运行时创建一个对象
FromName:在运行时使用熟悉的类名创建一个对象
IsDerivedFrom:确定该类是否派生于指定的类