rtti运行时类型识别与类对象的动态创建

rtti运行时类型识别与类对象的动态创建

ID:20949272

大小:381.30 KB

页数:9页

时间:2018-10-18

rtti运行时类型识别与类对象的动态创建_第1页
rtti运行时类型识别与类对象的动态创建_第2页
rtti运行时类型识别与类对象的动态创建_第3页
rtti运行时类型识别与类对象的动态创建_第4页
rtti运行时类型识别与类对象的动态创建_第5页
资源描述:

《rtti运行时类型识别与类对象的动态创建》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、RTTI运行吋类型识别CRuntimeClass是MFC专用的。CRuntimeClass在文件AFX.H中声明,它是W來串起MFC从COBJECT继承下来的所有类。也可以把A己写的类加入这个链表。structCRuntimeClass{//AttributesLPCSTRmJpszClassName;//笑名intm_nObjectSize;//类对象人小UINTm_w§chema;//分类编号(对不可分类的类,该值为-1)CObjcct*(PASCAL*m_pfnCrcatcObjcct)();//N

2、ULL=>abstractclassCRuntimeClass*m_pBaseClass;//基类指针,但这里针•定足抬向父亲的,而不会指向祖父//CRuntimeClassobjectslinkedtogetherinsimpleliststaticCRuntimeClass*pFirstClass;//classlist的链表义。注意这个乂基类指针不同。并11,该对象是个静态变量,所有CRuntimeClass对象共享CRuntimeClass*m_pNextClass;//链表屮紧跟当前对象的下•个

3、对象。与当前对象不•定有继承关系};特别注意:该struct使用了链表的概念,但是该链表与常规的数裾结构链表是不太一样的。该链表每次新加入的节点都足放在链表尖上的,类似栈。所以pFinstClass足随若每次新W点的加入一直在:更新的,pFirstClass必然指向新加入的什点。而m_pNextClass则抬向前一个加入的节点。如下图:首先初始化staticCRuntimeClass*pFirstClass为NULL。①最开始加入链表的足CObject。此吋:在_IMPLEMENT_RUNTIMECLAS

4、S宏屮先直接设置m_pBaseClass:#m_pBaseClass=NULL;然后在JMPLEMENT_RUNTIMECLASS宏十调川AFX.CLASSINIT的构造函数没gm_pNextClass与pFirstClass:(这两者足先m_pNextClass后pFirstClass)#m_pNextClass=pFirstClass=NULL;#pFirstClass=CObjcct;②然后CCmdTarget加入链表。数据]C新顺序M上:#m_pBaseClass=CObject;#m_pNext

5、Class=pFirstClass=CObject;#pFirstClass=CCmdTarget;③接着CWinThread加入链表。数据更新顺序同上:#m_pBaseClass=CCmdTarget;#m_pNextClass=pFirstClass=CCmdTarget;#pFirstClass=CWinThread;特-个类都拥有这样一个static的CRuntimeClass成员变景。由于每个类都有static的CRuntimeClass成员变量,所以每个类的对象都是引用以及修改本类的stati

6、c的RTTI运行吋类型识别CRuntimeClass是MFC专用的。CRuntimeClass在文件AFX.H中声明,它是W來串起MFC从COBJECT继承下来的所有类。也可以把A己写的类加入这个链表。structCRuntimeClass{//AttributesLPCSTRmJpszClassName;//笑名intm_nObjectSize;//类对象人小UINTm_w§chema;//分类编号(对不可分类的类,该值为-1)CObjcct*(PASCAL*m_pfnCrcatcObjcct)();/

7、/NULL=>abstractclassCRuntimeClass*m_pBaseClass;//基类指针,但这里针•定足抬向父亲的,而不会指向祖父//CRuntimeClassobjectslinkedtogetherinsimpleliststaticCRuntimeClass*pFirstClass;//classlist的链表义。注意这个乂基类指针不同。并11,该对象是个静态变量,所有CRuntimeClass对象共享CRuntimeClass*m_pNextClass;//链表屮紧跟当前对象的下

8、•个对象。与当前对象不•定有继承关系};特别注意:该struct使用了链表的概念,但是该链表与常规的数裾结构链表是不太一样的。该链表每次新加入的节点都足放在链表尖上的,类似栈。所以pFinstClass足随若每次新W点的加入一直在:更新的,pFirstClass必然指向新加入的什点。而m_pNextClass则抬向前一个加入的节点。如下图:首先初始化staticCRuntimeClass*pFirstClass为NULL。①最

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。