1. 程式人生 > 其它 >Essential C++ 讀書筆記 Ch2

Essential C++ 讀書筆記 Ch2

2.1如何編寫函式

函式的4個部分:返回型別,函式名,引數列表,函式體。

2.2函式的呼叫

兩種引數傳遞方式:by value 和 by reference。

pass by reference

面對reference的所有操作都和麵對“reference所指的物件”所進行的操作無二。
將引數宣告為reference的兩個理由:1.希望直接對所傳入的物件進行修改。2.希望降低複製大型物件的額外負擔。如果目的僅僅是2,那麼建議加上const。
pointer 可能並不指向某實際的物件。提領pointer是,一定要先確認其值非零。

作用域 scope

file scope內的物件具有所謂的static extent,意思是該物件的記憶體在main()開始執行之前即已經分配好。

動態記憶體管理

heap memory是由程式設計師自行管理的記憶體。

2.3提供預設引數值

預設引數值的resolve操作由最右邊開始執行。
預設引數值只可以指定一次,為了更高的可見性,我們決定將預設值放在函式宣告處而非定義處。

2.4使用區域性靜態物件

file scope物件會打斷各個函式之間的獨立性,使他們難以理解。

2.5 宣告inline函式

2.6 過載

引數列表不相同(引數型別不同,或者是引數個數不同)的兩個或多個函式可以擁有相同的名稱
為什麼返回型別不足以將函式過載?返回型別無法保證提供給我們一個區分不同的過載函式的語境。

2.7 定義並使用模板函式

2.8 函式指標

const vector<int>* (*seq_ptr)(int);

是一個函式指標的定義。
其中,const vector<int>是這個指標所指函式的返回型別,(int)是那個被指向函式的引數列表。現在seq_ptr可以指向“具有所列返回型別及引數列表”的任何一個函式。

索引值

由關鍵字enum定義。(列舉型別)

2.9 設定標頭檔案

函式的宣告應該放在標頭檔案中,而定義放在程式碼檔案中。
函式可以被宣告多次,但只能有1份定義。