類的內聯函數和外聯函數

內聯函數和外聯函數
 
類的成員函數可以分爲內聯函數和外聯函數。內聯函數是指那些定義在類體內的成員函數,即該函數的函數體放在類體內。而說明在類體內,定義在類體外的成員函數叫外聯函數。外聯函數的函數體在類的實現部分。
 
  內聯函數在調用時不是像一般的函數那樣要轉去執行被調用函數的函數體,執行完成後再轉回調用函數中,執行其後語句,而是在調用函數處用內聯函數體的代碼來替換,這樣將會節省調用開銷,提高運行速度。
 
  內聯函數與前面講過的帶參數的宏定義進行一下比較,它們的代碼效率是一樣的,但是內聯函數要優於宏定義,因爲內聯函數遵循函數的類型和作用域規則,它與一般函數更相近,在一些編譯器中,一旦關上內聯擴展,將與一般函數一樣進行調用,調試比較方便。
 
  外聯函數變成內聯函數的方法很簡單,只要在函數頭前面加上關鍵字inline就可以了。
 
  1. #include <iostream> 
  2. using namespace std; 
  3. class A 
  4. public
  5. A(int x, int y) //內聯函數 
  6.   X=x;Y=y; 
  7. int a() //內聯函數 
  8.   return X; 
  9. int b() //內聯函數 
  10.   return Y; 
  11. int c(); 
  12. int d(); 
  13. private
  14. int X,Y; 
  15. }; 
  16. //inline定義內聯函數 
  17. inline int A::c() 
  18. {  
  19. return a()+b(); 
  20. inline int A::d() 
  21. {  
  22. return c(); 
  23.  
  24. void main() 
  25. {  
  26. A m(3,5); 
  27. int I=m.d(); 
  28. cout<<"d()return:"<<I<<endl; 
 
輸出結果:
     d()return:8
說明:類A中,直接定義了3個內聯函數,又使用inline定義了2個內聯函數。
 
Note:
1.在內聯函數內不允許用for循環語句和switch開關語句。
2.內聯函數的定義必須出現在內聯函數第一次被調用之前。
3.在一個文件中定義的內聯函數不能在另一個文件中使用。它們通常放在頭文件中共享。
4.類內部保護或是私有取值成員函數,設定爲inline函數可以提高程序的執行效率。
5.可以在程序中使用 #pragma auto_inline達到禁止函數進行內聯
 
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章