原創(chuàng)|其它|編輯:郝浩|2009-11-24 10:01:55.000|閱讀 760 次
概述:C語(yǔ)言是簡(jiǎn)單的,因?yàn)樗旧聿](méi)有什么特別的內(nèi)容,標(biāo)準(zhǔn)C并沒(méi)有提供多少函式(其實(shí)一般用不到的提供了很多),也沒(méi)有提供面向?qū)ο蟮臋C(jī)制,但也正因此使得要用C編寫(xiě)“美麗”的程序變得復(fù)雜起來(lái)。復(fù)雜的原因其實(shí)很簡(jiǎn)單,一切的一切都要我們自己去實(shí)現(xiàn)。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
C語(yǔ)言是簡(jiǎn)單的,因?yàn)樗旧聿](méi)有什么特別的內(nèi)容,標(biāo)準(zhǔn)C并沒(méi)有提供多少函式(其實(shí)一般用不到的提供了很多),也沒(méi)有提供面向?qū)ο蟮臋C(jī)制,但也正因此使得要用C編寫(xiě)“美麗”的程序變得復(fù)雜起來(lái)。復(fù)雜的原因其實(shí)很簡(jiǎn)單,一切的一切都要我們自己去實(shí)現(xiàn)。
最近這段時(shí)間集中攻了下GObject,雖然只是會(huì)了些皮毛,但還是要寥寥寫(xiě)上幾句,省著以后忘記了,又要從頭整,畢竟GObject的學(xué)習(xí)時(shí)間令人頭痛的事兒。
P.S.關(guān)于怎么安裝GObject以及如何配置使用,本文不多介紹,WIN32下可以安裝Glade包,ubuntu下apt-get下就行了。
Part 1.
誰(shuí)說(shuō)C不能面向?qū)ο螅灰阍敢鈱?xiě),所有面向?qū)ο蟮臋C(jī)制都能夠?qū)崿F(xiàn),好像python之類(lèi)也是拿C整的吧(呃,多嘴了,涉及到了自己未知的領(lǐng)域。。。。。。orz,八成描述有錯(cuò)誤)。
當(dāng)然就C本身肯定沒(méi)什么對(duì)象可言的,但我們可以用它模擬出對(duì)象的機(jī)制。
就簡(jiǎn)單的對(duì)象而言,無(wú)非是成員和函式的雜糅,另外多了些繼承啊,類(lèi)型轉(zhuǎn)換之類(lèi)的功能。其實(shí)單就成員和函式而言,結(jié)構(gòu)體足矣。例如
struct a
{
int a;
int b;
void (*func)();
}
而如果要模擬繼承關(guān)系可在子結(jié)構(gòu)中聲明一個(gè)父結(jié)構(gòu),就像子類(lèi)繼承了父類(lèi)一般。
當(dāng)然像私有公有之類(lèi)的就有些麻煩了,一般的做法是靠程序員自己的理解來(lái)區(qū)分。
注意上面的指向函式的指針,可以說(shuō)C的一部分精華都集中于此,也是因?yàn)橛辛诉@種機(jī)制才使得用C模擬面向?qū)ο蟮臋C(jī)制并不是那么復(fù)雜。
另外可以補(bǔ)充看一下我先前的一篇記錄
關(guān)于C語(yǔ)言表驅(qū)動(dòng)的簡(jiǎn)單應(yīng)用
//www.cnblogs.com/pingf/archive/2009/08/03/1537730.html
其實(shí)用C寫(xiě)面向?qū)ο蟮拇a應(yīng)該算是一種編程風(fēng)格,而且真正用起來(lái)并不像上面說(shuō)的那么簡(jiǎn)單。
/////
下面列舉一段代碼,用面向?qū)ο蟮姆椒▽?shí)現(xiàn)了一個(gè)集合【沒(méi)有專門(mén)的輸出函式,建議調(diào)試下】,集合是什么?呃。。。就是一堆不重復(fù)數(shù)字的組合。
P.S.當(dāng)然這段代碼不看也罷【不是本文的重點(diǎn),本文重在介紹并總結(jié)使用GObject的面向?qū)ο蟮臋C(jī)制】,放在這里只是為了顯唄顯唄C的面向?qū)ο蟪淌降膶?xiě)法。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:博客園