目錄
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...