您的位置:首页 > 其它

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

2013-05-31 21:20 351 查看
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。

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: