學習筆記1之第八章函式探幽

2021-09-26 08:37:36 字數 1220 閱讀 2774

1 c++內聯函式

編譯器將使用相應的函式**替換函式呼叫,對於內聯**,函式無需跳到另乙個位置執行**再跳回來,所以內聯函式執行速度比常規函式快。

但是代價是需要更多的記憶體。

使用場合:

執行函式**的時間比處理函式呼叫機制的時間長,在我看來就是**量比較少的方法而且多次使用的情況。

使用方法:

函式宣告前加上關鍵字inline

函式定義錢加上關鍵字inline 

巨集與內聯函式區別:

2 引用變數

(1) 引用是已經定義變數的別名,主要是用作函式的形參,通過將引用用作引數,函式將使用原始資料,不是副本,這樣感覺和傳指標有一曲同工之妙,後續補充。

(2) 引用更加接近const指標,必須再建立的時候進行初始化

盡可能得使用const

使用const可以避免無意中修改資料的程式設計錯誤

使用const使函式能夠處理const和非const實參 否則只能接受非const資料

使用const引用使函式能夠正確生成並使用臨時變數(如果實參和應用引數不匹配,c++將生成臨時變數)

(3)返回引用需要注意得問題

避免返回函式終止時不再存在得記憶體單元引用(定義區域性變數再返回)

處理方法:

返回乙個作為引數傳遞給函式得引用

new分配新得空間

(4) 什麼時候使用引用引數

修改呼叫函式中得資料物件

通過傳遞引用而不是整個資料物件,可以提高程式得執行速度

對於修改呼叫函式中資料得函式

如果資料物件是結構,使用引用和指標

如果資料物件使類物件,使用引用

如果資料物件是陣列,使用指標

3 預設引數

對於帶引數列表得函式,必須從左向右新增預設值

int get_line(int n,int m=2,int n=3)

4 函式過載

可以有多個同名得函式,因此對名稱進行過載,過載得關鍵是函式得引數列表

匹配函式並不區分const與非const,把型別引用和型別本身視為同乙個特徵標,也就是下面這類不屬於過載

double cube(double x)

double cube(double &x)

5 函式模板

模板不建立任何函式,只是告訴編譯器如何定義函式

template

void swap(anytype &a,anytype &b)

函式模板後面弄明白再記錄了

C Primer Plus 第八章 函式探幽

什麼時候建立臨時變數 如果引用引數是const,如 func const double ra 則編譯器將在下面兩種情況下生產臨時變數 1.實參的型別正確,但不是左值。如 7.0 temp 7等 2.實參的型別不正確,但可以轉換為正確的型別。如 int,long等 右值引用 c 11新增了另一種引用 ...

C primer Plus 第八章 函式探幽

目錄 1.為什麼要使用內聯函式?2.如何使用內聯函式 3.內聯函式與巨集 4.引用變數 6.關於物件的引用 7.使用引用的原因 8.引用 指標 值的使用情況 9.預設引數 10.函式過載 11.函式模板 什麼時候使用模板?執行函式呼叫指令的時候,程式將在函式呼叫後立即儲存該指令的記憶體位址,並將函式...

第八章(筆記)

能在 中進行記憶體單元的定址的暫存器只有4個,分別是bx si di bp 其中bx bp 是基址,bx對應的段位址是ds,bp對應的段位址是ss si di 是變址,單獨使用時段位址是ds,組合使用段位址是跟隨組合的基址對應的段位址 中進行記憶體單元定址彙總 si di bx bp 常量 si 常...