中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

九龙县| 永泰县| 三门县| 茂名市| 远安县| 永定县| 二手房| 江口县| 阜宁县| 邻水| 井陉县| 合川市| 宁武县| 锦屏县| 忻州市| 舞阳县| 白银市| 淮阳县| 章丘市| 东源县| 江门市| 瓮安县| 巴塘县| 蓬安县| 镇康县| 南乐县| 新巴尔虎左旗| 呼伦贝尔市| 崇明县| 景谷| 中方县| 麻城市| 南投市| 修武县| 专栏| 麻栗坡县| 信宜市| 阿克陶县| 会同县| 靖边县| 海宁市|