內聯函數


關鍵詞 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不意味着這個函數一定能內聯處理,除了遞歸函數,編譯器會自動判斷一個函數是否適合聲明為內聯函數,如果內聯會造成代碼膨脹,增大開銷(例如一個特別長,功能特別復雜的函數被聲明為內聯函數),則會將其轉化為普通函數進行處理。

即,你可以建議將一個函數聲明為內聯函數,但聽不聽要看編譯器自己的判斷。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM