IMPLEMENT_DYNAMIC宏

IMPLEMENT_DYNAMIC宏

IMPLEMENT_DYNAMIC是实现“运行时类型识别”宏,与之相对应的是DECLARE_DYNAMIC(声明“运行时类型识别”宏)。也就是说你在.CPP文件中如果看见有IMPLEMENT_DYNAMIC,则在.H文件中必定有DECLARE_DYNAMIC的声明。 DECLARE_DYNAMIC/DEClARE_DYNAMIC是为了确定运行时对象属于哪一个类而定义的宏。 DEClARE_DYNCREATE/IMPLEMENT_DYNCREATE是为了“动态创建”类的实例而定义的宏。new可以用来创建对象,但不是动态的。比如说,你要在程序中实现根据拥护输入的类名来创建类的实例,下面的做法是通不过的: char szClassName[60]; cin >> szClassName; CObject* pOb=new szClassName; //通不过 这里就要用到DEClARE_DYNCREATE/IMPLEMENT_DYNCREATE定义的功能了。 定义: // // Helper macros for declaring CRuntimeClass compatible classes #ifdef _AFXDLL #define DECLARE_DYNAMIC(class_name) / protected: / static CRuntimeClass* PASCAL _GetBaseClass(); / public: / static const CRuntimeClass class##class_name; / static CRuntimeClass* PASCAL GetThisClass();...