- 內聯函數
函數調用有時間開銷,特別是函數本身語句少但多次被調用,爲減少調用開銷引入內斂函數
編譯器處理內聯函數時,將內斂函數的語句插入到調用語句處而不產生具體調用
加 inline 關鍵字
inline int max(){
if(a>b) return a;
return b;
}
弊端:可執行程序的體積變大
- 函數重載
一個或多個函數名字和返回類型相同,但參數類型和個數不同
編譯器根據調用語句中的實參個數類型判斷是哪個函數
int max(int a, int b){}
int max(double a, double b, int c){}
int max(int a, int b, double c){}
函數重載二義性
max(3.4,3.6,3.8) //不知道是第二個還是第三個max
如果名字和參數表完全相同,返回類型不同,叫做函數重定義
- 函數的缺省
int func(int a; int b=1; int c=20); //則第一個參數必須寫,後兩個可缺省
必須是函數最右邊的若干個參數才能設置爲缺省值,以上述爲例,當b缺省時,c必須也缺省;當c缺省時,b可以不缺省
函數的缺省可提高程序的可擴充性