C++之inline函數(內聯函數)

內聯擴展是用來消除函數調用時的時間開銷,這點其實在C語言中可以使用宏定義來做到,不過宏定義的缺點很明顯,宏定義函數一般很複雜,晦澀難懂。C++提出了內聯函數來改進這一點。

與宏不同,內聯函數本質還是一個函數,不是宏替換。內聯函數從源代碼層看,有函數的結構,而在編譯後,卻不具備函數的性質。

內聯函數一般適合於不存在while和switch等複雜的結構且只有1~5條語句的小函數上,否則編譯系統將該函數視為普通函數。

當然了,現在的編譯器都很智能,自己會控制某些函數成為內聯函數,即使你沒有聲明這是一個內聯函數。

習慣上,我們把內聯函數的聲明和定義都寫在頭文件里。

內聯函數實際上是我們時間效率和空間效率中尋求平衡的一種表現。

在C++里內聯函數使用關鍵字inline來聲明。如下所示:

inline int max(const int a, const int b)  {  	return a > b ? a : b;  }