亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

万载县| 抚远县| 崇州市| 惠州市| 日照市| 宁城县| 察隅县| 梁山县| 台中市| 莱阳市| 房产| 祁东县| 东辽县| 文山县| 闵行区| 宁南县| 墨江| 邓州市| 玉林市| 石河子市| 宣恩县| 犍为县| 巴青县| 资源县| 锦屏县| 嘉鱼县| 漯河市| 侯马市| 达日县| 墨竹工卡县| 永新县| 长治市| 彭阳县| 沈丘县| 临汾市| 勐海县| 金乡县| 江陵县| 襄汾县| 潮安县| 永年县|