|
隨著時(shí)間的流逝到了三月底,被C++的類的面向?qū)ο蟠輾埩私粋(gè)月,漸漸的上手了,語(yǔ)法也逐步形成,隨手可以用類來(lái)完成基礎(chǔ)的數(shù)學(xué)或者邏輯問(wèn)題,把這些對(duì)象搞清楚了,相信過(guò)些時(shí)用C++寫(xiě)數(shù)據(jù)結(jié)構(gòu)的鏈表和二叉樹(shù)也很容易搞定了,現(xiàn)在的工作就是收尾了,也就是C++快大功告成了,剩下的就是泛型編程和C++的工具了,不過(guò)這也只是C++部分,后面的MFC、VC、UC才是真正的挑戰(zhàn),C++只是打基礎(chǔ)而已,最難的都說(shuō)是MFC,因?yàn)閾?jù)說(shuō)很糾結(jié),有的人把它叫做麻煩C,一開(kāi)始就去拖控件,啥玩意,我目前還是不了解啊,慢慢來(lái)吧,VC,UC稍微看起來(lái)簡(jiǎn)單一些,不過(guò)系統(tǒng)不一樣,一個(gè)是在windows下操作的,另一個(gè)是在Linux下操作的,好了不管那么多了,過(guò)些時(shí)再來(lái)慢慢料理,一口吃不了那么多,得慢慢的啃。
說(shuō)起C++的類部分,剛開(kāi)始真沒(méi)頭緒,可能是思維沒(méi)跟上吧,對(duì)象老出錯(cuò),加上對(duì)象指針后,更加的混亂,不愧是C++的重頭戲,果然好戲在后頭!第一步接觸類最熟悉的就是class、公有的public、私有的private和初始化的各種構(gòu)造函數(shù)、成員函數(shù),至于說(shuō)保護(hù)的protected在很后面才開(kāi)始接觸,因?yàn)樯婕暗筋惖睦^承,類都沒(méi)學(xué)好,根本就無(wú)法去學(xué)繼承和多態(tài)?偟膩(lái)說(shuō)類和C的結(jié)構(gòu)體很相似,但是擴(kuò)展了很多功能,結(jié)構(gòu)體原本就是公有的類,所有類外的對(duì)象都可以使用它的成員或者是成員函數(shù),現(xiàn)在多了私有的private,也就是說(shuō)類外的對(duì)象無(wú)法使用這個(gè)類的私有成員,只能通過(guò)這個(gè)類的公有成員函數(shù)來(lái)調(diào)用私有部分的元素,因此這樣就有了安全的封裝性,而構(gòu)造函數(shù)一般用來(lái)初始化類的各種成員。
初步掌握類后第二步就開(kāi)始接觸友元、this指針和析構(gòu)函數(shù)了,友元就是好基友,關(guān)鍵字friend嘛,友元可以用來(lái)做友元類和友元函數(shù)使用,本來(lái)一個(gè)類私有成員在類外是無(wú)法使用的,就像是陌生人無(wú)法使用主人家的東西一樣,可是有了友元friend就可以大膽的使用了,不過(guò)好基友并不是很好,因?yàn)樗茐牧怂接性镜陌踩。this指針呢,說(shuō)穿了就是類的本身指針,也就是這個(gè)類的首地址,剛開(kāi)始用它還真是不習(xí)慣啊,不過(guò)用多了就好了。還有析構(gòu)函數(shù)的用途就是毀滅對(duì)象,和初始化的構(gòu)造函數(shù)相反,如果說(shuō)構(gòu)造函數(shù)是建房子的,那么它就是拆房子,而且是先拆最后創(chuàng)建的,這一點(diǎn)和拆樓房一樣,果斷的就是一個(gè)活生生的堆棧。
接著第三步就是運(yùn)算符重載,一個(gè)符號(hào)可以代替唧唧歪歪的描述了,不管是代碼也好,還是輸出輸入IO也好,所以說(shuō)這個(gè)東西很強(qiáng)大,能夠省略一大波描述,基本上所有的運(yùn)算符都可以用來(lái)使用代表一大串話,這一點(diǎn)有點(diǎn)像宏定義,比如一個(gè)輸入的運(yùn)算符重載ostream& operator<<(ostream& output,Class& c),(PS: ostream是輸出端口,output是輸出端口的名字,operator是運(yùn)算符重載的關(guān)鍵字) 通過(guò)自己隨心所欲的描述之后,以后只要用到‘<<’加類的類名就等于輸出你想要的各種結(jié)果。不僅如此還能通過(guò)它運(yùn)算各種有規(guī)律的計(jì)算,比如計(jì)算兩個(gè)虛數(shù)只用一個(gè)'+'就行了,而原來(lái)的加號(hào)只能用于兩個(gè)實(shí)數(shù)相加,通過(guò)重載后就可以計(jì)算虛數(shù)了,再比如可以計(jì)算矩陣、圖形、英文字母、各種大算法,所以也經(jīng)常用,比如一個(gè)加法的運(yùn)算符重載 Class& operator+(Class& c1,Class& c2)就是可以把兩個(gè)類c1,c2通過(guò)自己各種規(guī)則或者不規(guī)則的手段相加,加的規(guī)則自己定,甚至可以定為相減,相乘等,于是變成類似3+2=1的情況,不過(guò)這個(gè)只有奇葩才寫(xiě)成這樣不靠譜的東西。
終于到了類的高級(jí)部分,也是我目前正在完成的部分,第四步就是類的繼承和派生,繼承就像是人一代代的傳承下去,下一代遺傳上一代的一部分基因,類也如此,也有父母和子女,不過(guò)它們名字是父類和子類,不過(guò)一般還是叫基類和派生類,類繼承方式有三種,公有繼承、私有繼承和保護(hù)繼承,不管怎么樣,通過(guò)不同的繼承方式可以繼承上一代的不同的基因,而保護(hù)protected這個(gè)時(shí)候就開(kāi)始有作用了,子類可以用父類的保護(hù)成員和保護(hù)成員函數(shù),相當(dāng)于兒子可以使用父親的東西一樣,而外人是無(wú)法使用的。第五步就開(kāi)始接觸多態(tài)和虛函數(shù)了,目前還在學(xué)習(xí)當(dāng)中,雖然了解了很多,但還是需要深入的了解才行?傮w來(lái)說(shuō)這兩步整合起來(lái)就是面向?qū)ο蟮母呒?jí)部分。
好了C++剩下就是第四部分面向?qū)ο蟾呒?jí)篇和泛型編程篇了, 在四月份打好這場(chǎng)決戰(zhàn)!有個(gè)好的收尾才有新的開(kāi)始,最近發(fā)現(xiàn)一個(gè)謬論,從游戲角度出發(fā),發(fā)現(xiàn)有三個(gè)主流方向,把C++當(dāng)作攻擊魔法系為主的魔法師職業(yè),數(shù)據(jù)結(jié)構(gòu)相當(dāng)于輔助回復(fù)系僧侶職業(yè),兩者掌握完全后轉(zhuǎn)職成為魔法全知的賢者職業(yè),相當(dāng)于做算法的。而工具性的東西就是非魔法型的職業(yè),可以比如戰(zhàn)士等于數(shù)據(jù)庫(kù)Oracle,武術(shù)家等于win32,加起來(lái)的進(jìn)階職業(yè)戰(zhàn)斗大師等于MFC,另一個(gè)方向 盜賊等于SQL,弓箭手等于Unix,加起來(lái)的進(jìn)階職業(yè)游俠等于UC?偨Y(jié)了幾個(gè)游戲然后和這些東西關(guān)聯(lián)起來(lái)產(chǎn)生得到的結(jié)果,所以一個(gè)職業(yè)一個(gè)職業(yè)的玩,修煉好了轉(zhuǎn)職換個(gè)職業(yè),直到所有職業(yè)修滿為止,這也是我玩RPG的一貫習(xí)慣,所以每次玩RPG都會(huì)很累,累的是練級(jí)!
|
|