1 內(nèi)聯(lián)函數(shù)
函數(shù)調(diào)用要保存上下文,以及參數(shù)和返回值的入棧出棧虹蒋,因此有額外的開銷糜芳。當(dāng)函數(shù)只有幾條語句時,這些開銷就不可忽略了魄衅。解決此問題的方法峭竣,就是引入內(nèi)聯(lián)函數(shù)。C/C++編譯器會把內(nèi)聯(lián)函數(shù)的代碼都復(fù)制到調(diào)用的地方晃虫,不會產(chǎn)生函數(shù)調(diào)用皆撩。缺點(diǎn)是,程序的體積會變大哲银。
語法:
inline 函數(shù)定義
例如:
inline int max(int a, int b)
{
if (a > b) return a;
return b;
}
2 函數(shù)重載
在 C 語言中扛吞,兩個函數(shù)不可以同名。
在 C++ 中荆责,為了函數(shù)命名更加容易滥比,只要函數(shù)的入?yún)€數(shù)或類型不同,函數(shù)就可以同名做院。這種技術(shù)稱之為函數(shù)重載盲泛。
C++ 編譯器會根據(jù)調(diào)用函數(shù)時的實參個數(shù)和類型,最終決定調(diào)用某個函數(shù)定義山憨。
例如查乒,不同數(shù)據(jù)類型的max函數(shù)弥喉,在C++中可以定義如下:
int max (int a, int b) {...}
int max (double a, double b) {...}
int max (int a, int b, int c) {...}
但是郁竟,如果函數(shù)名,入?yún)€數(shù)由境,入?yún)㈩愋徒韵嗤锬叮挥蟹祷刂挡煌鸵椋瑒t不是函數(shù)重載,是函數(shù)重復(fù)定義讥蟆,是一種錯誤的行為勒虾。