天天看點

内聯函數使用注意事項

class TableClass

{

 private:

  int I,j;   

 public:   

  int add() { return I+j;}

  inline int dec() { return I-j;}

  int GetNum();

}

inline int tableclass::GetNum()

{  

 return I;  

}

上面申明的三個函數都是内聯函數。

注意:

1、在C++中,在類的内部定義了函數體的函數,被預設為是内聯函數。而不管是否有inline關鍵字。

2、如果函數的定義放在類的外部,函數定義前必須加inline才能成為内聯函數,而函數聲明可以加inline也可以不加

3、關鍵字inline 必須與函數定義體放在一起才能使函數成為内聯,僅将inline 放在函數聲明前面不起任何作用。

是以說,inline 是一種“用于實作的關鍵字”,而不是一種“用于聲明的關鍵字”。一般地,使用者可以閱讀函數的聲明,但是看不到函數的定義。盡管在大多數教科書中内聯函數的聲明、定義體前面都加了inline 關鍵字,但我認為inline 不應該出現在函數的聲明中。這個細節雖然不會影響函數的功能,但是展現了高品質C++/C 程式設計風格的一個基本原則:聲明與定義不可混為一談,使用者沒有必要、也不應該知道函數是否需要内聯。-摘自高品質C++/C 程式設計指南