【C/C++学院】0804-C语言和设计模式(继承、封装、多态)
(1)继承性
1. typedef struct _parent
2. {
3. int data_parent;
4.
5. }Parent;
6.
7. typedef struct _Child
8. {
9. struct _parent parent;
10. int data_child;
11.
12.}Child;
在设计C语言继承性的时候,我们需要做的就是把基础数据放在继承的结构的首位置即可。这样,不管是数据的访问、数据的强转、数据的访问都不会有什么问题。
(2)封装性
1. struct _Data;
2.
3. typedef void (*process)(struct _Data* pData);
4.
5. typedef struct _Data
6. {
7. int value;
8. process pProcess;
9.
10.}Data;
封装性的意义在于,函数和数据是绑在一起的,数据和数据是绑在一起的。这样,我们就可以通过简单的一个结构指针访问到所有的数据,遍历所有的函数。封装性,这是类拥有的属性,当然也是数据结构体拥有的属性。
(3)多态
1. typedef struct _Play
2. {
3. void* pData;
4. void (*start_play)(struct _Play* pPlay);
5. }Play;
多态,就是说用同一的接口代码处理不同的数据。比如说,这里的Play结构就是一个通用的数据结构,我们也不清楚pData是什么数据,start_play是什么处理函数?但是,我们处理的时候只要调用pPlay- start_play(pPlay)就可以了。剩下来的事情我们不需要管,因为不同的接口会有不同的函数去处理,我们只要学会调用就可以了。
#include stdio.h #include stdlib.h struct cmd char *p; void(*prun)(struct cmd *pcmd); void(*pprint)(struct cmd *pcmd); typedef struct cmd CMD; void run(CMD *pcmd ) system(pcmd- void print(CMD *pcmd) printf("%s", pcmd- struct newcmd struct cmd cmd1; int(*plength)(struct newcmd *pnewcmd); int getlength(struct newcmd *pnewcmd) return strlen(pnewcmd- cmd1.p);//返回长度
相关文章
- C++异常处理机制(throw、try、catch、finally)
- C++:关键字explicit的用法
- 知无涯之C++ typename的起源与用法
- Effective C++笔记(三):资源管理
- C++获取控制台输入
- C/C++每日一练(20230317)
- C语言/C++基础之五彩炫酷珠
- C语言/C++基础之弹力豆腐串
- C语言/C++基础之大炮打飞机
- C语言/C++常见习题问答集锦之移动的坦克
- C语言/C++常见习题问答集锦(八十一)之学生信息与排序
- C语言/C++常见习题问答集锦(五十三) 之素数与指针选择排序
- C语言/C++常见习题问答集锦(四十一) 之数组的动态与静态
- C语言/C++常见习题问答集锦(三十九) 之一石二鸟
- C语言/C++常见习题问答集锦(三十七) 抽象的猫还是具体的狗
- C语言/C++常见习题问答集锦(一)
- 使用Qt和C语言或者C++语言实现十、二、八、十六进制之间的转换(两种方法)
- C++ 刷题常用函数总结
- C语言与C++之常见问题分享
- 2021年完美安装配置YOLO教程:成功在Windows10下安装YOLO开发环境并成功完成目标检测测试「基于C/C++版本」