關鍵詞 inline
inline int func(int arg1,int arg2){
//實現
return 0;
}
作用:不是在調用時發生控制轉移,而是在編譯時將函數體嵌入在每一個調用處,適用於功能簡單,規模較小又使用頻繁的函數。遞歸函數無法內聯處理,內聯函數不能有循環體,switch語句,不能進行異常接口聲明。
注意:
1.實現在類內部的成員函數默認是內聯函數(隱式內聯)
class demo{
void fun(){//隱式內聯
///實現
}
}
2.類內聲明,類外實現的函數,無論在聲明還是實現時使用關鍵字inline均可將函數聲明為內聯函數(顯式內聯)
class demo{
inline void fun();//顯式內聯
}
void demo::fun(){
//實現
}
或
class demo{
void fun();
}
inline void demo::fun(){//追加顯式內聯
//實現
}
3.使用內聯函數關鍵字inline不意味着這個函數一定能內聯處理,除了遞歸函數,編譯器會自動判斷一個函數是否適合聲明為內聯函數,如果內聯會造成代碼膨脹,增大開銷(例如一個特別長,功能特別復雜的函數被聲明為內聯函數),則會將其轉化為普通函數進行處理。
即,你可以建議將一個函數聲明為內聯函數,但聽不聽要看編譯器自己的判斷。