【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱: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大观之二(类识别)相关推荐

  1. MFC中的CAsyncSocket类实现网络通信

    近年来,利用Internet进行网际间通讯,在WWW浏 览.FTP.Gopher这些常规服务,以及在网络电话.多媒体会议等这些对实时性要求严格 的应用中成为研究的热点,而且已经是必需的了.Window ...

  2. MFC中的CString类使用方法指南

    MFC中的CString类使用方法指南 原文出处:codeproject:CString Management [禾路:这是一篇比较老的资料了,但是对于MFC的程序设计很有帮助.我们在MFC中使用字符 ...

  3. MFC Windows 程序设计[二十八]之字体样式(附源码)

    MFC Windows 程序设计[二十八]之字体样式 程序之美 前言 主体 运行效果 核心代码 逻辑分析 结束语 程序之美 前言 MFC是微软公司提供的一个类库(class libraries),以C ...

  4. MFC Windows 程序设计[二十五]之五彩十六宫格(附源码)

    MFC Windows 程序设计[二十五]之五彩十六宫格 程序之美 前言 主体 运行效果 核心代码 逻辑分析 结束语 程序之美 前言 MFC是微软公司提供的一个类库(class libraries), ...

  5. 《我的眼睛--图灵识别》第十章:实战演练:文字类识别

    <我的眼睛–图灵识别>第十章:实战演练:文字类识别 1.标准数字 标准数字(Standard Numbers)是指10个数字使用的都是同属一种字体,它们的数字没有发生变形.没有扭曲.没有错 ...

  6. 一步步手动实现热修复(二)-类的加载机制简要介绍

    *本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 本节课程主要分为3块: 1.一步步手动实现热修复(一)-dex文件的生成与加载 2.一步步手动实现热修复(二)-类的加载机制简要介 ...

  7. MFC开发IM-第二十篇、MFC添加自定义消息

    转载来自 : https://www.cnblogs.com/skywatcher/p/3506158.html ................................ MFC添加自定义消息 ...

  8. mfc大观之五、六(消息机制和消息运行)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 写过windows程序的朋友都知道,win32主要是利用消息进行界面的编写的.那么在mfc中, ...

  9. MFC 教程【3_CObject类】

    CObject类 CObject是大多数MFC类的根类或基类.CObject类有很多有用的特性:对运行时类信息的支持,对动态创建的支持,对串行化的支持,对象诊断输出,等等.MFC从CObject派生出 ...

最新文章

  1. 风之语.人在职场也需要'备胎'
  2. 使用Decision Tree对MNIST数据集进行实验
  3. Docker中应用的性能调优指南(一)- 先谈谈容器化性能调优
  4. 商品领域ddd_DDD 领域驱动设计-商品建模之路
  5. JavaScript(笔记)
  6. signature=a662b42175c342c2f67535627a2cf0a4,California and Nevada Railroad
  7. java python 运行 内存_Python C Java中字符串在内存中的存储
  8. 第十五届北京师范大学程序设计竞赛决赛(网络同步赛) B lca水 D 思维,找规律...
  9. linux-mysql忘记密码解决办法-适用5.76
  10. Jmeter 录制https(五)
  11. Android OpenGL加入光照和材料属性
  12. 在小程序中如何使用svg图标
  13. TOEFL wordlist 26
  14. Redshift渲染器和Octane渲染器哪个更适合渲染C4D动画?
  15. 星辰变java镇东王府在哪里_星辰变中让人非常失望的四位高手,最后一位只动口不出手!...
  16. DBLP数据集用weka数据挖掘 xml转csv格式文件
  17. 深入理解MATLAB中contour函数
  18. 惠普暗影精灵Plus 3代 (OMEN 17-an014TX)参数
  19. 计算机休眠后黑屏打不开,[电脑待机以后黑屏打不开怎么办]电脑睡眠后黑屏打不开...
  20. win10家庭版没有本地组策略编辑器

热门文章

  1. 2017年SEO推广优化怎么做
  2. 高通首次演示基于3GPP的5G新空口连接 有望成为全球标准
  3. Windows下配置Nginx+php7
  4. C#泛型编程基础知识总结【转】
  5. 【译】索引进阶(八):SQL SERVER唯一索引
  6. DB pivot unpivot
  7. 移动端判断触摸的方向
  8. 3D中的相机 - 投影矩阵和视图矩阵
  9. php随笔11-Thinkphp常用系统配置大全
  10. RecyclerView通过notifyItemChanged方法更新item数据避免闪烁