Effective C 讀書筆記 34

2021-06-16 20:47:00 字數 672 閱讀 7444

條款34:區分介面繼承和實現繼承

在對base class 進行public繼承的時候,根據base class中成員函式的型別我們能夠得到不同的繼承方式:如下:

class shape;

class rectangle:public shap;

在上面的類shap中,成員函式draw是pure的,因此class 是抽象基類,也就不能有shap型別的物件,此時draw提供的只

是乙個函式的介面,在rectangle類中必須要對這個介面進行實現,這個是介面的繼承,當然在shap基類中,pure virtual函式也

可以有預設的實現方式,這樣我們在其子類rectangle中就可以使用預設的基類純虛函式,此時我們必須要顯示的進行呼叫。

對於error的函式,是普通的virtual函式,他對其子類提供的是介面和預設實現的繼承,此時如果子類中沒有顯示的定義一

個則將會使用父類中申明的成員函式。

在objectid成員函式中,我們定義的是普通的成員函式,對於public繼承的體系來說我們不應該在子類中對該成員函式進

行重定義,因為這會覆蓋掉父類函式的定義!

請記住:

Effective C 讀書筆記3

條款8 別讓異常逃離析構函式 c 並不禁止析構函式吐出異常,但不鼓勵這樣做。但如果你的析構函式必須執行乙個動作,而該動作可能會在失敗時丟擲異常,該怎麼辦?兩個辦法解決 一是 如果丟擲異常程式就結束,通常通過呼叫abort函式完成 dbconn dbconn catch 如果程式遭遇乙個於析構期間發生...

effective C 讀書筆記 3

1 p18 頁 經過我的實驗 void f1 const a a 和void f2 a const a 是不同的!莫非書上有錯?2 stl迭代器 天生就是 t const ptr 如果需要乙個 const t ptr 則需要的是 const iterator 3 這個表要記一下子 3 non con...

《effective C 》讀書筆記

1,c 關鍵字explicit c 中,乙個引數的 建構函式 或者除了第乙個引數外其餘引數都有預設值的多參建構函式 承擔了兩個角色。1 是個 構造器,2 是個預設且隱含的型別轉換操作符 所以,有時候在我們寫下如 aaa 這樣的 且恰好 的型別正好是aaa單引數構造器的引數型別,這時候 編譯器就自動呼...