C++的行內函數和過載函式
阿新 • • 發佈:2019-01-22
行內函數
行內函數是C++語言為降低小程式用開銷而採取的一種機制。
定義行內函數的方法是,在函式名第一次出現時,在函式名之前冠以關鍵字inline。通常在函式原型中指定。若已在函式原型中指定inline,則函式定義時不能重複給出。
行內函數原型為:inline 型別 函式名(形式引數表);
行內函數的呼叫方法與其他普通函式相同。
說明:
①若inline不在函式名第一次出現時指定,則編譯器把它當做普通函式處理。
②一般行內函數只適合於1-5行的小程式。在行內函數中,不能含有複雜的流程控制語句。例如,不能含有多分支語句和迴圈語句,否則inline無效。
③遞迴函式不能說明為行內函數。
過載函式
C++語言允許定義多個重名函式,各個函式有不同的引數集,這些函式稱為過載函式。編譯器根據不同引數的型別和個數產生呼叫匹配。函式過載常用於生成幾個類似任務而處理不同資料個數、型別的同名函式。
C++編譯器只根據函式引數表(引數型別和個數)進行過載版本的呼叫匹配,函式返回值的內容不起作用。例如:
int average(int,int);
double average(int,int);
這兩個不是過載函式,C++編譯器認為函式重複說明。
例外,要注意過載函式中使用預設函式時可能產生的二義性。例如,若max過載函式定義為:
int max(int,int);
int max(int,int=0);
則呼叫max(5,3)
無法選擇呼叫版本。