C++实现句柄类(一)

C++实现句柄类(一)C 学习笔记之实现句柄类寒假看了 C 沉思录和 C 程序设计语言 一直对类的功能分类相关章节记忆犹新 感到这些都是 C OOP 思想的精髓 昨天突然想到为什么不实践一下 写一个简单的句柄类呢 C 初学者可能不知道句柄类为何物 其实说白了 句柄类就是为了消除来自同一个基类的派生类的操作差异性而建立的一个中间层 它管理了这些派生类的指针 消除了各种派生类建立和使用的不一致性

C++学习笔记之实现句柄类

寒假看了C++沉思录和C++程序设计语言,一直对类的功能分类相关章节记忆犹新,感到这些都是C++ OOP思想的精髓。

昨天突然想到为什么不实践一下,写一个简单的句柄类呢?

C++初学者可能不知道句柄类为何物。其实说白了,句柄类就是为了消除来自同一个基类的派生类的操作差异性而建立的一个中间层,它管理了这些派生类的指针,消除了各种派生类建立和使用的不一致性。

我为了建立句柄类,首先要找一个适合并且容易用OOP实现的东西,后来就想到了GUI,于是我就设计了一个按钮的类族,建立了三个简单的类,分别为Button类,CommandButton类,ImageButton类。Button类是所有按钮类的基类,而CommandButtonImageButton都继承自Button类。这些类的关系如下图所示:

Button
    |
    –    CommandButton
    –    ImageButton

其中Button类的接口和实现在 button.h 中。
CommandButton类的接口和实现在 cmdbtn.h 中。
ImageButton类的接口和实现在 imgbtn.h 中。

然后呢,我就设计了一个叫做ButtonHandle的类,顾名思义,也就是Button的句柄类了。
ButtonHandle的接口在 btnhandle.h 中,实现在 btnhandle.cpp 中。

程序使用 g++ 4 在 Slackware Linux 13 下编译通过,还使用 MinGW g++ 3.4.5 在 Windows 7 下编译通过。

废话不说了,直接贴代码。
 
























button.h

button.h

cmdbtn.h

cmdbtn.h

imgbtn.h

imgbtn.h

btnhandle.h

C++实现句柄类(一)

 

btnhandle.cpp

C++实现句柄类(一)


 

main.cpp(测试程序)

C++实现句柄类(一)


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/222678.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午3:13
下一篇 2026年3月17日 下午3:14


相关推荐

  • 设置 IntelliJ IDEA 主题和字体的方法

    设置 IntelliJ IDEA 主题和字体的方法1前言在博文“IntelliJIDEA之HelloWorld项目创建及相关配置文件介绍”中,咱们已经用IntelliJIDEA创建了第一个Java项目HelloWorld,如下图所示:观察上图,大家有没有发现一些问题,例如,整个界面的字体是不是都太小了一点啊?不知道大家感受如何,反正博主看到这么小的字体,当真是头晕眼花啊!因此,接下来,就让咱们一起尝试着把IntelliJ

    2022年6月27日
    72
  • 移远EC20二次开发之4G图像传输

    移远EC20二次开发之4G图像传输我们公司和移远有合作所以得到了他们 EC20 的二次开发的开发板 下面是我开发 4G 图像传输的总结 工作方式有两种 一种 AT 一种 socket 下面先是 AT 命令一 在 linux 下解压文件解压如下文件二 安装 SDK 每次开新的终端进行编译都要进行环境变量的设置

    2026年3月17日
    2
  • 【面试必备】这道MySQL面试题难住了90%的程序员。。。「建议收藏」

    【面试必备】这道MySQL面试题难住了90%的程序员。。。

    2022年2月11日
    48
  • acwing-361. 观光奶牛(0/1分数规划)「建议收藏」

    acwing-361. 观光奶牛(0/1分数规划)「建议收藏」给定一张 L 个点、P 条边的有向图,每个点都有一个权值 f[i],每条边都有一个权值 t[i]。求图中的一个环,使“环上各点的权值之和”除以“环上各边的权值之和”最大。输出这个最大值。注意:数据保证至少存在一个环。输入格式第一行包含两个整数 L 和 P。接下来 L 行每行一个整数,表示 f[i]。再接下来 P 行,每行三个整数 a,b,t[i],表示点 a 和 b 之间存在一条边,边的权值为 t[i]。输出格式输出一个数表示结果,保留两位小数。数据范围2≤L≤1000,2≤P≤50

    2022年8月10日
    7
  • Linux 配置Node环境变量[通俗易懂]

    Linux 配置Node环境变量[通俗易懂]修改/etc/profile文件,在末尾添加以下内容exportNODE_HOME=/usr/local/node//Node所在路径exportPATH=$NODE_HOME/bin:$PATH修改完成后需要重新登陆才能生效,也可以执行命令source/etc/profile或者./etc/profile来生效(注意。与/etc/profile中有一个空格)查看P…

    2022年5月2日
    968
  • 缺陷报告的案例_设计缺陷案例

    缺陷报告的案例_设计缺陷案例

    2025年11月12日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号