1. 程式人生 > >C++的行內函數和過載函式

C++的行內函數和過載函式

行內函數

行內函數是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)

無法選擇呼叫版本。