偶感得到一本好書,所以分享下心得,看的很慢,呵呵。
總括:此部分寫的還是比較好,特別是第一章,介紹了面向?qū)ο缶幊痰奶貏e,關(guān)鍵是從一個解決問題的角度來分析,相比較而言,C++ Primer更顯得雜亂無章。通過對問題深入,根據(jù)解決問題的方法,來實(shí)現(xiàn)最合理化的得到目的,從而引出繼承等等一系列概念和手段。
1.
構(gòu)造器
e.g Data(int
monthln,int dayln,int yearln)
{
Month = monthln;
Day =
dayln;
Year =
yearln;
}
Date thedate(7,1,2003);
Date thisdate;
第一個調(diào)用了用戶定義的構(gòu)造函數(shù)來初始化相應(yīng)的數(shù)據(jù),問題是,如果是0-參數(shù)的構(gòu)造器呢?就是下面的那種情況,沒有任何參數(shù),默認(rèn)的,編譯器會自動生成一個,這個就是缺省構(gòu)造函數(shù),但是如果用戶定義了一個0-參數(shù)的構(gòu)造器,那么就不會自動生成這樣一個了。從安全性角度去看,定義類的時候,應(yīng)當(dāng)顯示的定義一個缺省構(gòu)造函數(shù)(如果有繼承的話,沒有定義基類的缺省構(gòu)造函數(shù)是會出現(xiàn)編譯錯誤的。)
注意:一個構(gòu)造器,不管有沒有參數(shù),都不會自動初始化類的字段,所以必須自己顯式的寫出代碼來初始化。
|
2.
繼承的細(xì)節(jié)
我們可能經(jīng)常遇到這樣的問題,在開發(fā)一個類B的時候,發(fā)現(xiàn)其他的一些類A的方法是非常有用的。一個可能性就是令B從A繼承,也就是說,B是A的子類,這樣就可以使用A的所有方法;還有一種方案,就是在B中定義一個字段,它的類型是A,通過這個字段調(diào)用A的方法。前者,就是“Is a”(是一個)的關(guān)系,而后者就是”Has a”(有一個的關(guān)系)。如何實(shí)現(xiàn)這種區(qū)分更好的來規(guī)劃呢,一般,如果類B分享了A的全部功能,那么B從A繼承是更好的選擇,但是如果B中只有一個組件能從A中受益,那么就是Has a來實(shí)現(xiàn)了。。
|
posted on 2009-11-11 22:49
deercoder 閱讀(384)
評論(0) 編輯 收藏 引用 所屬分類:
C/C++