MFC六大关键技术之仿真学习笔记(四)
来源:互联网 发布:nginx 多域名配置 编辑:程序博客网 时间:2024/05/21 09:37
这一节我认为挺简单的,IsKindOf无非就是判断某个对象是否是某种类或者继承于某种类。
*IsKindOf(运行时类型识别)
因为有了前面的“类型识别”网,我们可以很方便进行“同宗”路线的追踪,当然我们也可以"对类型识别"网进行遍历,得到所有类型。
我们在CObject中加入一个成员函数:
BOOL CObject::IsKindOf(const CRuntimeClass* pClass) const{CRuntimeClass* pClassThis = GetRuntimeClass();while (pClassThis != NULL){if (pClassThis == pClass){return TRUE;}pClassThis = pClassThis->m_pBaseClass;}return FALSE;}
当然所有派生于CObject的类均实现这种方法,依次向基类对比对应的CRuntimeClass。其实我当时在想啊,这个比较为什么不直接对比CRuntimeClass中的m_lpszClassName呢?
MFC在这里的处理很巧妙,我们在DECARE_DYNAMIC中可以看到
static CRuntimeClass class##class_name;
virtual CRuntimeClass* GetRuntimeClass() const;
GetRuntimeClass() 经过override可返回相对应的class##class_name成员,class##class_name为静态成员,即类对应唯一一个class##class_name,那么我们便可根据class##class_name地址比较来确定是否是某种类型或者继承于某种类型。
0 0
- MFC六大关键技术之仿真学习笔记(四)
- 三、MFC 六大关键技术之仿真 (学习笔记)
- MFC六大关键技术之仿真学习笔记(一)
- MFC六大关键技术之仿真学习笔记(二)
- MFC六大关键技术之仿真学习笔记(三)
- MFC六大关键技术之仿真学习笔记(六)
- MFC六大关键技术之仿真学习笔记(五)
- MFC六大关键技术之仿真学习笔记(七)
- MFC六大关键技术之仿真学习笔记(八)
- 深入浅出MFC学习笔记:(第三章MFC六大关键技术之仿真:类型识别,动态创建) .
- 深入浅出MFC学习笔记(第三章:MFC六大关键技术之仿真:消息映射)
- 深入浅出MFC学习笔记(第三章:MFC六大关键技术之仿真:命令传递) .
- 深入浅出MFC学习笔记:(第三章MFC六大关键技术之仿真:类型识别,动态创建)
- 深入浅出MFC学习笔记:(第三章MFC六大关键技术之仿真:类型识别,动态创建) .
- 深入浅出MFC学习笔记(第三章:MFC六大关键技术之仿真:消息映射)
- 深入浅出MFC学习笔记(第三章:MFC六大关键技术之仿真:命令传递) .
- MFC六大关键技术之仿真(一)
- 深入浅出MFC学习笔记:MFC六大关键技术仿真之MFC程序的初始化过程
- 黑马程序员----反射
- C#程序开发中经常遇到的10条实用的代码
- Merge Sorted Array
- 浅析POI在广告投放中的作用
- iPhone屏幕知识点解析
- MFC六大关键技术之仿真学习笔记(四)
- IOS 6 自动布局 入门-1
- hdu1418——抱歉
- 创建基线或发行基线的主要步骤
- 井底之蛙的新发现LEMP
- 【转载】failed to create virtual machine
- Song -----See You Again
- PHP Official Account Services Unavailable, Try Again Later
- extends和implements区别