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 常...