重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
蓝鸥iOS培训讲师推荐:要想实现对象编程,就要用C语言来实现,那么今天写一点关于用C实现面向对象编程的方法。主要有两方面类的封闭实现和C继承的实现:
创新互联服务紧随时代发展步伐,进行技术革新和技术进步,经过十载的发展和积累,已经汇集了一批资深网站策划师、设计师、专业的网站实施团队以及高素质售后服务人员,并且完全形成了一套成熟的业务流程,能够完全依照客户要求对网站进行网站建设、成都做网站、建设、维护、更新和改版,实现客户网站对外宣传展示的首要目的,并为客户企业品牌互联网化提供全面的解决方案。一、类的封闭实现
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);//——
每段程序后面都有注释,就是为了能够更好的让同学们理解本节所讲的内容,也希望所写的东西能够帮助到同学们。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。