from:
藥方1 ☞必需時刻明白物件導向程式設計中要扮演的兩個角色,乙個就是你,類的設計者,乙個就是使用者,類的使用者,你的設計是針對使用者而言的,當然你也可能是身兼兩職,同時是設計者又是使用者。
藥方2☞設計乙個類時,將宣告放於標頭檔案,定義放在cpp檔案中,因為類是給使用者使用的,將宣告放在標頭檔案中,使用者便可以方便使用,而定義在cpp檔案中主要是為了兩點,一提高編譯效率,二避免使用者包含檔案後發生重定義。
藥方3☞宣告完乙個類後必須以分號結束,因為宣告完乙個類後後面還可以加乙個物件名,用來宣告該類的例項化物件,分號『;』 不是表示宣告的結束,而是表示宣告該類物件的結束,如果單純乙個分號表示沒有宣告任一物件。
藥方4☞避免在建構函式裡例項化本類,否則會發生遞迴死迴圈。
藥方5☞避免在析構函式裡delete本類例項,否則會發生遞迴死迴圈。
藥方6☞inline成員函式必須在標頭檔案裡定義,因為inline函式本質是內聯展開的,跟#define預編譯類似。
藥方7☞hpp標頭檔案裡的類或函式必須在hpp標頭檔案裡定義,因為hpp的本質是讓編譯器只對hpp檔案裡的內容編譯一次,然後將目標**附到cpp目標檔案中。
藥方8☞hpp標頭檔案裡的全域性變數必須宣告為static 否則會發生重編譯,static本質是讓編譯器只定義一次。
藥方9☞const 資料成員必須要在初始化列表中賦初值(c++11中也可以直接=號賦值),因為它是const變數。
藥方10☞const成員函式不允許你修改類的資料成員。因為它就是不予許。
藥方11☞指向const物件的指標訪問成員函式時,只能訪問const成員函式,因為指向const物件的指標不予許你修改它所指向的記憶體的值,而const成員函式不修改類物件資料記憶體的值,它們倆正好互相吻合。
藥方12☞static資料成員需要在類外定義,它本質上並非屬於包含它的類。
藥方13☞static成員函式不包含this指標,因為它本質上並非屬於本類。
藥方14☞如果類中的某一指標資料成員指向分配的記憶體空間,則一般的做法是定義析構函式,在析構函式裡釋放它所指的記憶體空間。因為類的生命週期結束時,如果沒有定義析構函式,則會呼叫編輯器合成的析構函式,而該合成的析構函式不會智慧型地釋放資料成員指標所指向的記憶體,所以必須在類結束之前釋放它指向的記憶體。還有另一種做法就是將該成員指標定義為智慧型指標型別。
藥方15☞操作符過載最好不要過載兩個內建型別的物件,過載的型別至少要有乙個為類型別或列舉型別。因為過載兩個內建型別的物件完全沒有必要。
藥方16☞賦值操作符過載(operator=),不宜設為虛函式,因為賦值操作符中的指標或引用函式引數有可能是指向基類物件也有可能是指向派生類物件,因此容易發生混淆。
藥方17☞在繼承層次中,基類應該定義乙個虛析構函式,因為非虛析構函式不會被繼承,而虛析構函式會在派生類定義析構函式時發生重定義(就是虛表指標指向了派生類的析構函式)。在利用基類指標實現多型時,基類指標指向了新開闢(new)的派生類物件,這時由於基類的析構函式是虛的,所以再利用基類指標釋放(delete)掉派生類物件記憶體時,就可以順利地執行派生類的析構函式了。
藥方18☞模板類或函式,在標頭檔案中宣告,並且,定義也要在此標頭檔案中(一般採用hpp標頭檔案),因為模板特化機制實際上是編譯時利用模板引數產生可以相容例項的目標**附於使用它的cpp檔案中(特化),從而實現多型,而不能預先產生目標**就相容例項的。
藥方19☞宣告友元之前必須對該宣告友元的物件,進行宣告或定義。因為你讓我跟他交朋友,可以,但你必需讓我知道他的為人吧。^_^
藥方20☞你所知的只是滄海一粟,切莫過於驕傲和自滿。
c 物件導向程式設計必備「良方」
from 藥方1 必需時刻明白物件導向程式設計中要扮演的兩個角色,乙個就是你,類的設計者,乙個就是使用者,類的使用者,你的設計是針對使用者而言的,當然你也可能是身兼兩職,同時是設計者又是使用者。藥方2 設計乙個類時,將宣告放於標頭檔案,定義放在cpp檔案中,因為類是給使用者使用的,將宣告放在標頭檔案...
c 物件導向程式設計必備「良方」
前言 c 物件導向中的繁瑣機制,不得不讓你在程式設計中頻頻 犯病 找錯誤,找bug,困擾,是你的病源所在,本人雖不是什麼 良醫 卻也算是總結出以下 良方 注 難免會有記憶上的遺漏,知識上的不夠,遺漏之處還需大家來補充啊!藥方1 必需時刻明白物件導向程式設計中要扮演的兩個角色,乙個就是你,類的設計者,...
c 物件導向程式設計必備「良方」(歡迎大家來補充!)
前言 c 物件導向中的繁瑣機制,不得不讓你在程式設計中頻頻 犯病 找錯誤,找bug,困擾,是你的病源所在,本人雖不是什麼 良醫 卻也算是總結出以下 良方 注 難免會有記憶上的遺漏,知識上的不夠,遺漏之處還需大家來補充啊!藥方1 必需時刻明白物件導向程式設計中要扮演的兩個角色,乙個就是你,類的設計者,...