Essential C 學習筆記 五

2021-06-14 01:02:56 字數 1208 閱讀 4350

5.1 物件導向程式設計概念

1. 物件導向風格的三個獨特概念: 繼承(inheritance), 多型(polymorphism), 動態繫結(dynamic binding).

2. 多型和動態繫結的特性, 只有在使用pointer或reference時才能發揮.

5.2 物件導向程式設計思維

1. 當程式定義出乙個派生物件時, 基類和派生類的constructor都會被執行起來. 但派生類被摧毀時,  基類和派生類的destructor

也都會被執行起來(但次序顛倒).

2. 基類被宣告為protected 的所有成員都可以被派生類直接取用, 除此派生類之外, 都不得直接用protected 成員.

3. 使用派生類不需刻意區分"繼承而來的成員"和"自身定義的成員", 兩者的使用完全透明.

5.4 定義乙個抽象基類

1. 定義抽象類的第乙個步驟是找出所有子類共通的操作行為.

第二步是找出哪些行為與型別相依, 也就是說, 有哪些操作行為必須根據不同的派生類而有不同的實現方式.

第三步是試著找出每個操作行為的訪問層級.

2. 每個虛函式, 必須有其定義. 如果對於該類而言, 這個虛函式並無實質意義的話, 那麼可設為純虛函式 (pure virtual function).

凡基類定義有乙個或多個虛函式, 應該要將其destructor宣告為virtual.

5.5 定義乙個派生類

2. 最好跳過虛函式機制, 是該函式在編譯期就完成決議, 不需等到執行期才決議, 這就是為什麼要指明呼叫物件的原因.

3. 每當派生類的某個member與基類的member同名時, 便會遮蔽住基類的那份member. 在基類和派生類中提供同名的non-virtual 函式,

並不是好的解決方法.

5.7 基類應該多抽象

1. data members 如果是個reference, 則必須在constructor的 member initialization list中加以初始化. 如果data members 是個pointer,就無此限制:

可以在constructor內加以初始化, 也可以先將它初始化為null, 稍後再令他指向某個有效的記憶體位址.

5.9 在派生類中定義乙個虛函式

2. 在基類得constructor中, 派生類的虛函式絕對不會被呼叫.

3. 多型需要一層間接性, 唯有以基類的pointers和references才能支援面向程式設計的概念.

Essential C 學習筆記

essential c 學習筆記 系統學習c 的第一天,做點小筆記。使用c 進行檔案讀寫操作的例程 寫檔案 include include using namespace std 一定要新增這句 使用標準的命名 intmain 讀檔案 讀檔案的操作 include include include u...

essential c 讀書筆記5

繼承 將一群相關的類組織起來,並讓我們得以分享期間的共通資料和操作行為 父類 基類 子類 派生類。多型 可以使我們操縱不同類時,如同操縱單一個體。讓基類的pointer 和 reference 得以十分透明的指向任何乙個派生類的物件。動態繫結 解析操作會延遲到執行時才進行。靜態繫結 程式執行之前就已...

重讀Essential C 讀書筆記2

重讀essential c 讀書筆記2 by sssa2000 7 25 2004 第二章 面向過程的程式設計風格 很久以前我也很困惑為什麼要有面向過程物件導向的程式設計風格,雖然現在已經有很深的體會。其實不管是什麼風格,只要能更好地解決問題就是好的風格。1 傳值和傳址 lippman 在說明這個問...