C primer Plus 第八章 函式探幽

2021-10-04 12:48:03 字數 1092 閱讀 9431

目錄

1.為什麼要使用內聯函式?

2.如何使用內聯函式

3.內聯函式與巨集

4.引用變數

6.關於物件的引用

7.使用引用的原因

8.引用、指標、值的使用情況

9.預設引數

10.函式過載

11.函式模板

什麼時候使用模板?

執行函式呼叫指令的時候,程式將在函式呼叫後立即儲存該指令的記憶體位址,並將函式引數複製到堆疊,跳到標記函式起點的記憶體單元,執行函式**,然後條回到儲存的那條指令的記憶體位址。這意味著執行函式要來回的跳躍位置,所以執行函式需要一定的開銷。

而內聯函式,編譯器會將它的函式**替換相關的函式呼叫。(這一過程在編譯的時候實現,並不使用程式執行時候的時間,因此提高了函式的效率)

inline double fun(int a)

int main()

;template<>

void swap(job &j1,job &j2)//只交換薪水

還有乙個叫顯示例項化的東西,就是說你告訴編譯器,讓編譯器提前生成乙個型別的函式

如 template void swap(int,int );這是個宣告

所謂隱式例項化就是程式根據引數型別來生成函式。

顯示例項化 隱式例項化 顯示具體化統稱為具體化

編譯器選擇使用哪乙個函式版本

第一步:建立候選函式列表。其中包含與被調函式名稱相同的函式和模板函式

第二步:使用候選函式列表建立可執行函式。

第三步:確定是否有最佳的可行函式。

從最佳到最差的順序為:

1.完全匹配

2.提公升轉換(如 shorts 轉換為 int ,float轉換為double)

3.標準轉換(如char 轉換為int,long轉換為double)

4.使用者定義的轉換(如類宣告裡定義的轉換)

選擇使用函式模板還是函式過載?

如果函式的函式體和引數個數相同,那麼則可使用函式模板,反之則使用函式過載

c primer Plus第八章筆記

該書應從8章之後開始學習 現在開始第8章 p199 字元輸入輸出 緩衝區 是乙個存放內容的臨時儲存區域 為什麼要設定緩衝區 一 將若干個字元作為乙個塊進行傳輸比逐個傳送這些字元耗時少。二 如果輸入了乙個錯的字元,可以用鍵盤的更正功能進行修改。當按下回車鍵的時候就傳送輸入的字元。但是,互動性的程式需要...

C primer plus 第八章(一)

a int a 10 b int ob a c int p a d int function int const int 問 是引用?取位址?答 b表示引用,即 ob是a的別稱,從此ob與a就綁在一起同生同變,簡直就是乙個人 c中 表示取位址 d中函式原型中的形參也是 引用 注意第二形參的 cons...

C Primer Plus 隨記(第八章)

1.建立引用變數 int rat int roatents rat 此式中 不是位址運算子,而是型別表示符,roatents是rat的別名,他們指向相同的值和記憶體單元,改變 roatents的值,rat也會變。roatents是乙個引用變數 int prats rat prat是指標 roaten...