mfc大观之二(类识别)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
在mfc中,判断父类和子类是否存在继承关系是通过静态变量来完成的。举个例子来说,所有子类到父类之间是通过一条链表串联在一起的。如果子类可以通过链表访问到父类的指针,那么我们说两者之间存在继承关系,否则没有继承关系。
那么,既然父类和子类是通过链表串在一起的,那么这是怎么实现的呢?关键就在静态变量。我们知道,类的静态变量是被所有类共享的,因此掌握了静态变量,就可以将父类和子类串在一起了。下面有一段示例代码,大家可以了解一下。
#include <iostream>
using namespace std;struct runclass {char name[64];struct runclass* next;
};#define CREATE_RUNCLASS(basic) \static runclass run_##basic; \static runclass* get_run_class() {return &run_##basic;}class cobject{public:CREATE_RUNCLASS(cobject)public:cobject() {}virtual ~cobject() {}};runclass cobject::run_cobject = {"cobject", NULL};#define IMPLEMENT_RUN_CLASS(basic, origin) \runclass basic::run_##basic = {#basic, &origin::run_##origin}class ctemplate : public cobject {public:ctemplate() {}~ctemplate() {}CREATE_RUNCLASS(ctemplate)
};IMPLEMENT_RUN_CLASS(ctemplate, cobject);bool
isKindOf(runclass* basic, runclass* origin){if(NULL == basic || NULL == origin)return false;while(basic->next)basic = basic->next;return 0 == strcmp(basic->name, origin->name) ? true :false;
}int
main(int argc, char* argv[]){cout << cobject::get_run_class() << endl;cout << ctemplate::get_run_class() << endl;return 0;
}
mfc大观之二(类识别)相关推荐
- MFC中的CAsyncSocket类实现网络通信
近年来,利用Internet进行网际间通讯,在WWW浏 览.FTP.Gopher这些常规服务,以及在网络电话.多媒体会议等这些对实时性要求严格 的应用中成为研究的热点,而且已经是必需的了.Window ...
- MFC中的CString类使用方法指南
MFC中的CString类使用方法指南 原文出处:codeproject:CString Management [禾路:这是一篇比较老的资料了,但是对于MFC的程序设计很有帮助.我们在MFC中使用字符 ...
- MFC Windows 程序设计[二十八]之字体样式(附源码)
MFC Windows 程序设计[二十八]之字体样式 程序之美 前言 主体 运行效果 核心代码 逻辑分析 结束语 程序之美 前言 MFC是微软公司提供的一个类库(class libraries),以C ...
- MFC Windows 程序设计[二十五]之五彩十六宫格(附源码)
MFC Windows 程序设计[二十五]之五彩十六宫格 程序之美 前言 主体 运行效果 核心代码 逻辑分析 结束语 程序之美 前言 MFC是微软公司提供的一个类库(class libraries), ...
- 《我的眼睛--图灵识别》第十章:实战演练:文字类识别
<我的眼睛–图灵识别>第十章:实战演练:文字类识别 1.标准数字 标准数字(Standard Numbers)是指10个数字使用的都是同属一种字体,它们的数字没有发生变形.没有扭曲.没有错 ...
- 一步步手动实现热修复(二)-类的加载机制简要介绍
*本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 本节课程主要分为3块: 1.一步步手动实现热修复(一)-dex文件的生成与加载 2.一步步手动实现热修复(二)-类的加载机制简要介 ...
- MFC开发IM-第二十篇、MFC添加自定义消息
转载来自 : https://www.cnblogs.com/skywatcher/p/3506158.html ................................ MFC添加自定义消息 ...
- mfc大观之五、六(消息机制和消息运行)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 写过windows程序的朋友都知道,win32主要是利用消息进行界面的编写的.那么在mfc中, ...
- MFC 教程【3_CObject类】
CObject类 CObject是大多数MFC类的根类或基类.CObject类有很多有用的特性:对运行时类信息的支持,对动态创建的支持,对串行化的支持,对象诊断输出,等等.MFC从CObject派生出 ...
最新文章
- 风之语.人在职场也需要'备胎'
- 使用Decision Tree对MNIST数据集进行实验
- Docker中应用的性能调优指南(一)- 先谈谈容器化性能调优
- 商品领域ddd_DDD 领域驱动设计-商品建模之路
- JavaScript(笔记)
- signature=a662b42175c342c2f67535627a2cf0a4,California and Nevada Railroad
- java python 运行 内存_Python C Java中字符串在内存中的存储
- 第十五届北京师范大学程序设计竞赛决赛(网络同步赛) B lca水 D 思维,找规律...
- linux-mysql忘记密码解决办法-适用5.76
- Jmeter 录制https(五)
- Android OpenGL加入光照和材料属性
- 在小程序中如何使用svg图标
- TOEFL wordlist 26
- Redshift渲染器和Octane渲染器哪个更适合渲染C4D动画?
- 星辰变java镇东王府在哪里_星辰变中让人非常失望的四位高手,最后一位只动口不出手!...
- DBLP数据集用weka数据挖掘 xml转csv格式文件
- 深入理解MATLAB中contour函数
- 惠普暗影精灵Plus 3代 (OMEN 17-an014TX)参数
- 计算机休眠后黑屏打不开,[电脑待机以后黑屏打不开怎么办]电脑睡眠后黑屏打不开...
- win10家庭版没有本地组策略编辑器