记得还在我们大学C++第一门课的时候,老师就告诉我们说,C++是一门面向对象的语言。C++有三个最重要的特点,即继承、封装、多态。等到后来随着编码的增多和工作经验的积累,我也慢慢明白了面向对象的含义。可是,等我工作以后,使用的编程语言更多的是C语言,这时候我又想能不能把C语言变成面向对象的语言呢?等到后来通过思考和实践,我发现其实C语言也是可以面向对象的,也是可以应用设计模式的,关键就在于如何实现面向对象语言的三个重要属性。
(1)继承性
- typedef struct _parent
- {
- int data_parent;
- }Parent;
- typedef struct _Child
- {
- struct _parent parent;
- int data_child;
- }Child;
(2)封装性
- struct _Data;
- typedef void (*process)(struct _Data* pData);
- typedef struct _Data
- {
- int value;
- process pProcess;
- }Data;
(3)多态
- typedef struct _Play
- {
- void* pData;
- void (*start_play)(struct _Play* pPlay);
- }Play;
多态,就是说用同一的接口代码处理不同的数据。比如说,这里的Play结构就是一个通用的数据结构,我们也不清楚pData是什么数据,start_play是什么处理函数?但是,我们处理的时候只要调用pPlay->start_play(pPlay)就可以了。剩下来的事情我们不需要管,因为不同的接口会有不同的函数去处理,我们只要学会调用就可以了。
本文转载来源:http://blog.csdn.net/feixiaoxing/article/details/7192302