C primer學習筆記 第7章

2021-06-22 14:48:16 字數 2547 閱讀 1015

1.形參的初始化與變數的初始化一樣:如果形參具有非引用型別,則複製實參的值,如果形參為引用型別,則它只是實參的別名。

2.c中習慣用傳遞指標來實現對實參的訪問。c++中,使用引用形參更安全。

3.如果使用引用形參唯一的目的是避免複製形參,則應將形參定義為const引用。

4.非const引用形參 只能與完全同型別的非const物件關聯。因此,應該將不修改相應實參的形參定義為const引用。如果定義為非const,則毫無必要的限制了該函式的使用。

5.交換數值:1).定義*v1*v2,使用是swap(&v1,&v2);2).定義是&v1&v2,使用是swap(i,j)  (修改i和j);3).定義是*&v1*&v2,使用是swap(pi,pj)  (修改指標指向)。

6.vector形參為引用型別,通過傳遞 指向容器中 需要處理元素的 迭代器 來傳遞容器。

7.陣列形參:陣列以普通的非引用型別傳遞。函式操縱的是指標的副本,不會修改實參指標的值。但函式可通過該指標修改陣列元素的值。

8.陣列的大小: int j[ ];大小為sizeof(j)/sizeof(*j)。

9.int main(int argc,char*argv[ ])

10.void函式可以返回另乙個型別同樣是void的函式的呼叫結果。

11.exit_failure、exit_success :返回值的預處理變數: 在cstdlib標頭檔案中。

不要返回指向區域性物件的指標!

13.如果乙個形參有預設實參,那麼後面所有的形參都必須有預設實參。最可能使用預設實參的形參排在最後。

14.在乙個檔案中,只能為乙個形參指定預設實參一次。並且只有在包含該函式定義的原始檔中呼叫該函式時,預設實參才有效。

15.static物件一旦被建立,在程式結束前都不會被撤銷。

16.將形參定義為引用型別:1).需要修改實參的值。2).通過一次呼叫獲得多個結果值。3).傳遞大型物件或 無法複製類型別做形參(複製建構函式為private時)->但此時的唯一目的是為了避免複製,應將形參定義為const引用。

17.指標形參和 引用形參的用法:當函式需要處理陣列且 函式體不依賴於陣列的長度時 使用指標形參。

18.內聯函式適用於優化小的、只有幾行且經常被呼叫的函式。內聯函式應在標頭檔案中定義,且如若有修改,使用了該標頭檔案的所有原始檔都必須重新編譯。

19.編輯器隱式地將在類內定義的成員函式當作內聯函式。

20.類的成員函式可以訪問該類的private成員。

21.每個成員函式都有乙個額外的、隱含的形參將該成員函式與呼叫該函式的類物件**在一起。

22.形參this初始化為呼叫函式的物件的位址。

23.跟在成員函式形參表後面的const 改變了隱含的this形參的型別。用這種方式使用const的函式成為 常量成員函式。

24.const物件、指向const物件的指標或引用 只能用於呼叫其const 成員函式。

25.建構函式 是特殊的成員函式, 與類 同名,而且沒有返回型別。建構函式 通常應確保其每個 資料成員 都完成了初始化式。

26.編譯器建立: 合成的預設建構函式:對於類型別 的成員,會呼叫該成員所屬類自身的預設建構函式實現初始化。 若物件在全域性作用域中定義(即不在任何函式中) 或定義為靜態區域性物件,則這些成員將被初始化為0。

27.合成的預設建構函式 一般適用於僅包含類型別成員的類。而對於含有內建型別或復合型別成員的類,通常應該定義他們自己的預設建構函式初始化這些成員。

28.形參與const形參的等價性僅適用於非引用形參。有const引用形參的函式 與有非const引用形參的函式是不同的。類似,指標形參 亦不同。

29.c++中,名字查詢發生在型別檢查之前。

30.過載 與 作用域:不同作用域,區域性遮蔽全域性;相同作用域,均為過載,所有呼叫以不同方式解釋。

31.實參轉換等級降序排列:精確匹配、通過型別提公升、通過標準轉換、通過類型別轉換。

1). 較小的整數提公升為int型。2).char到double優先順序比char到 unsigned char 高。

32.列舉型別物件只能用同一列舉型別的另一物件 或乙個列舉成員 進行初始化。

無法將整型值傳遞給列舉型別的形參;可以將 列舉值傳遞給整型形參,此時 列舉值被提公升為int型或更大的整型。

33.僅當形參是引用或 指標時,形參是否為const才有影響(為過載)。

34.不能基於指標本身 是否為const 來實現函式的過載。 f(int *); f(int * const)->(為redeclaration)。此時,const用於修飾指標本身,而不是修飾指標所指向的型別。

35.在引用函式名但又沒有呼叫該函式時,函式名被自動解釋為指向函式的指標。

36.直接引用函式名等效於 在函式名上應用取位址操作符。

37.如果指向函式的指標沒有初始化,或者具有0值,則該指標不能在函式呼叫中使用。

38.具有函式型別的形參所對應的實參將被自動轉換為指向相應函式型別的指標。但當返回的是函式時,轉換操作無法實現。

39.指向過載函式指標 的型別 必須與過載函式的 乙個版本精確匹配。

40.臨時物件 一直存在直到最大表示式 結束為止,最大表示式 指的是包含建立該臨時物件的 表示式 的最大範圍內 的表示式。

41.不能僅僅基於不同的返回型別而實現函式過載。

《C Primer》筆記 第7章 類

引入this 引入const成員函式 類作用域和成員函式 在類的外部定義成員函式 定義乙個返回this物件的函式 不能依賴合成的預設建構函式 default的含義 建構函式初始值列表友元的宣告定義乙個型別成員 令成員作為內聯函式 可變資料成員 類資料成員的初始值類的宣告令成員函式作為友元 函式過載和...

C primer學習筆記 第10章

1.關聯容器通過鍵key 儲存和讀取元素。兩個基本的關聯容器是map和set。3.set比較適合有效儲存不同值的集合,而map適用於儲存 或修改 每個鍵所關聯值的情況。5.建立pair物件時,必須提供兩個型別名。6.對於pair類,可以直接訪問其資料成員,其成員都是公有的,分別名為first和sec...

c primer 學習筆記 1 第1 5章

1.輸入輸出 流 隨著時間的推移,字元是順序生成或消耗的 std cout hello world endl 運算子接受兩個運算物件,左側必須是ostream,右側是要列印的值,計算結果返回ostream物件中。上述使用兩次 運算子,第一次運算結果成了第二次的左側物件。note 在寫過載 運算子是要...