iOS開發篇——C 實現面 向對象編程介紹

藍鷗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的方法寫實體函數,如例:

152102469.jpg

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>

每段程序後面都有註釋,就是爲了能夠更好的讓同學們理解本節所講的內容,也希望所寫的東西能夠幫助到同學們。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章