C++行內函數、函式過載與函式預設引數
一、行內函數
- 背景:函式呼叫是有時間開銷的。如果函式本身只有幾條語句,執行非常快,而且函式被反覆執行很多次,相比之下呼叫函式所產生的這個開銷就會顯得比較大。
- 目的:為了減少函式呼叫的開銷,引入了行內函數機制。編譯器處理對行內函數的呼叫語句時,是將整個函式的程式碼插入到呼叫語句處,而不會產生呼叫函式的語句。
- 程式碼例項:(inline代表行內函數)
inline int Max(int a,int b)
{
if( a > b) return a;
return b;
}
二、函式過載
- 定義:一個或多個函式,名字相同,然而引數個數或引數型別不相同,這叫做函式的過載。
- 以下三個函式是過載關係:
int Max(double f1,double f2) { }
int Max(int n1,int n2) { }
int Max(int n1,int n2,int n3) { }
Max(3.4,2.5); //呼叫 (1)
Max(2,4); //呼叫 (2)
Max(1,2,3); //呼叫 (3)
Max(3,2.4); //error,二義性
優點:
- 函式過載使得函式命名變得簡單。
- 編譯器根據呼叫語句的中的實參的個數和型別判斷應該呼叫哪個函式。
三、函式預設引數
- 定義: C++中,定義函式的時候可以讓最右邊的連續若干個引數有預設值,那麼呼叫函式的時候,若相應位置不寫引數,引數就是預設值。
- 目的:函式引數可預設的目的在於提高程式的可擴充性。
- 優點:即如果某個寫好的函式要新增新的引數,而原先那些呼叫該函式的語句,未必需要使用新增的引數,那麼為了避免對原先那些函式呼叫語句的修改,就可以使用預設引數。
- 程式碼例項
void func( int x1, int x2 = 2, int x3 = 3) { }
func(10 ) ; //等效於 func(10,2,3)
func(10,8) ; //等效於 func(10,8,3)
func(10, , 8) ; //不行,只能最右邊的連續若干個引數預設
函式引數的預設值也可以理解為函式引數的預設值。當你傳入引數時,引數就是你傳入的數,當你不給它引數時,引數就是預設值,也就是預設值。
注:使用函式預設引數要注意避免有函式過載的二義性
void valueX(int val = 0){
x = val;
}
int valueX(){
return x;
}
valueX();//錯誤,無法判斷呼叫的是哪個valueX
相關文章
- 3.3.2 函式的預設引數和佔位引數 函式過載函式
- 函式定義、函式的引數、函式的預設引數函式
- JS 利用引數個數進行函式過載JS函式
- Python 函式(預設引數)Python函式
- 函式外與函式內的變數函式變數
- TypeScript 函式可選引數和預設引數TypeScript函式
- 函式引數 引數定義函式型別函式型別
- 預設建構函式、引數化建構函式、複製建構函式、解構函式函式
- javascript為函式設定預設引數JavaScript函式
- javascript函式引數和函式內同名變數的關係JavaScript函式變數
- Javascript函式引數求值——Thunk函式JavaScript函式
- 函式基礎和函式引數函式
- ORACLE單行函式與多行函式之三:數值函式Oracle函式
- javascript給函式引數設定預設值JavaScript函式
- 聚合函式與數字函式函式
- Lua中呼叫ref和out修飾引數的函式/過載函式函式
- PHP函式,引數,可變參函式.PHP函式
- 關於C++引用做為函式引數和指標作為函式引數C++函式指標
- C++ 函式的可變引數C++函式
- C++函式過載C++函式
- C++ 函式過載,函式模板和函式模板過載,選擇哪一個?C++函式
- C++行內函數C++函數
- Swift4.0 函式引數(內部外部引數和下劃線在函式的作用)Swift函式
- 函式、引數、解構函式
- 函式引數詳解函式
- c++函式引數和返回值C++函式
- C++ main函式命令列引數使用C++AI函式命令列
- 第 8 節:函式-函式定義和引數函式
- 函式的動態引數 及函式巢狀函式巢狀
- 物件,函式作為一個函式的引數物件函式
- Excel函式應用教程:函式的引數(轉)Excel函式
- 函式過載與函式模板的區別函式
- C++之函式過載C++函式
- C++的函式過載C++函式
- C/C++—— C++中函式重寫和函式過載C++函式
- 函式(三)作用域之變數作用域、函式巢狀中區域性函式作用域、預設值引數作用域函式變數巢狀
- JavaScript進階系列01,函式的宣告,函式引數,函式閉包JavaScript函式
- 字元函式、數字函式和日期函式字元函式