温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

iOS开发篇——C 实现面 向对象编程介绍

发布时间:2020-08-01 14:37:41 来源:网络 阅读:532 作者:蓝鸥易荟云 栏目:移动开发

蓝鸥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的方法写实体函数,如例:

iOS开发篇——C 实现面 向对象编程介绍

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);//——</SPA<div>

每段程序后面都有注释,就是为了能够更好的让同学们理解本节所讲的内容,也希望所写的东西能够帮助到同学们。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI