深入浅出MFC学习笔记:MFC六大关键技术仿真之RTTI运行时类型识别

本文介绍了MFC中RTTI(运行时类型识别)的应用,通过详细步骤展示了如何构造类别型录网,包括定义数据结构、使用DECLARE和IMPLEMENT宏,以及在Cobject基类中实现IsKindOf函数,便于在运行时检查对象的类型。
摘要由CSDN通过智能技术生成


RTTI(运行时类型识别)

   参考文献:深入浅出MFC-侯捷

怎样去构造类别型录网?

一、定义数据结构:


其中pFirstClass指针属于痊愈变量,所以它应该以static修饰之。

而且我们最终希望达到以下这样子的效果:构造成如下的类别型录


 二、具体做法:

1.在头文件和cpp文件中放入两个神奇的宏:

 

(1)DECLARE宏的定义

 

只.在头文件中放入声明宏,则等价于下面定义:


(2)IMPLEMENT宏的定义


只要在cpp文件中放入IMPLEMENT宏,则等价于下面的语句



2.对于Cobject(最基类),需要另外定义特殊的宏,不能套用之前的:

设计如下:



并且此时CruntimeClass的static成员变量需要初始化:


最终结果如下:


3.最后就形成了类别型录网:


三、有了类别型录网,就可以实现IsKindOf功能,在Cobject中添加这个函数,于是这个函数就被所有类别所继承。

IsKindOf功能:为了

具体代码如下:能在执行期间侦测某个对象是否属于某种类别。例如:CDocument对象应该是属于CDocument类别和CDocument的基类CCmdTarget。


该函数把参数所指定的CRuntimeClass对象拿来与类型型录中元素一一比对,比对成功就传回TRUE,否则返回FALSE。

总结:设计出该类型型录网可以很方便的构造出类的层次结构图。


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值