十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
蓝鸥iOS培训讲师推荐:要想实现对象编程,就要用C语言来实现,那么今天写一点关于用C实现面向对象编程的方法。主要有两方面类的封闭实现和C继承的实现:
创新互联专注于企业成都营销网站建设、网站重做改版、兰州网站定制设计、自适应品牌网站建设、H5技术、电子商务商城网站建设、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为兰州等各大城市提供网站开发制作服务。
一、类的封闭实现
1、类的定义,其中CLASS()是lw_oopc_kc.h中定义的宏#include"lw_oopc_kc.h"CLASS()
{inta;void(*init)(void*,int);void(*put)(void*);};
2、成员函数的实现类的封装实质是用借用struct结构体,用函数指针来表示C中类的方法(成员函数)。下面是给类A的方法写实体函数,如例:
3、类(结构体)中的函数指针与实现函数的关联通过下面的宏把类的方法(函数指针)和实现函数关联:CTOR(A)
FUNCTION_SETTING(init,init_A);FUNCTION_SETTING(put,put_A);END_CTOR4、对象的定义、构造和初始化如果没有这个连接处理,类(实际是struct)中的函数指针就没有函数的功能。函数init_A()是XXX_A()的命名模式,是指明XXX_A()属于A类的函数,方便程序的理解和维护。下面就是要构造类。在C中这个工作系统自动调用构造函数实现而在C中,这个过程智能显示调用来实现。借助lw_oopc_kc.h(或"lw_oopc.h")可以利用宏CLASS_CTOR(class,obj)来将定义的对象进行构造,使之有数据的同时有方法的功能。实例化一个对象分为3步,如下:
//1、定义对象CLASS_CTOR(A,aa1);
//2、构造对象—使得函数指针和函数关联aa1.init(&aa1,10);
//3、初始化对象的成员变量,注意要:&aa1(取地址)
二、C继承的实现:
1、子类的定义:在类的开头借用已经定义的类进行定义一个变量,为了更简单、清楚,表明是继承,增加一个宏定义:#defineINHERIT(BASE)IMPLEMENTS(BASE),所以以类B继承类A为例子如下:CLASS(B){INHERIT(A);
//继承A类intb;
//子类的成员void(*init)(void*,intx);void(*put)(void*);};
2、子类的成员函数实现,为了方便辨别,类B的成员函数带后缀‘_B’voidinit_B(void*t,intx,
inty)
{B*cthis=(B*)t;CLASS_CTOR(A,cthis->A);//——继承的基类在这里构造,对象是cthis
->Acthis->A.init(&cthis->A,x);//——
每段程序后面都有注释,就是为了能够更好的让同学们理解本节所讲的内容,也希望所写的东西能够帮助到同学们。