c++中的內聯函數inline用法實例

在本篇文章裏小編給大家整理的是關於c++中的內聯函數inline用法實例以及相關知識點,有需要的朋友們學習下。

問題描述:類中成員函數缺省默認是內聯的,如果在類定義時就在類內給出函數定義,那當然最好。如果在類中未給出成員函數定義,而又想內聯該函數的話,那在類外要加上 inline,否則就認爲不是內聯的。內聯函數的inline要加在函數前面,不可以加在聲明前面。

class A
{
  public:void Foo(int x, int y) { } // 自動地成爲內聯函數
}
//正確寫法:
// 頭文件
class A
{
  public:
  void Foo(int x, int y);
}
// 定義文件
inline void A::Foo(int x, int y){} 

//錯誤寫法:
inline void Foo(int x, int y); // inline 僅與函數聲明放在一起
void Foo(int x, int y){}

1. 內聯函數作用:爲了解決一些頻繁調用的小函數大量消耗棧空間(棧內存)的問題,特別的引入了 inline 修飾符,表示爲內聯函數。

例子:

#include <stdio.h>
//函數定義爲inline即:內聯函數
inline char* dbtest(int a) {
  return (i % 2 > 0) ? "奇" : "偶";
} 
 
int main()
{
  int i = 0;
  for (i=1; i < 100; i++) {
    printf("i:%d  奇偶性:%s /n", i, dbtest(i));  
  }
}

內聯函數是在程序編譯的時候替換的方式加入程序中的。

2. 內聯函數使用的限制:

inline 的使用是有所限制的,inline 只適合涵數體內代碼簡單的涵數使用,不能包含複雜的結構控制語句例如 while、switch,並且不能內聯函數本身不能是直接遞歸函數(即,自己內部還調用自己的函數)。

代碼較長,內部出現循環不適合使用內聯函數。

3. 內聯函數只是一個對編譯器的建議,具體實不實現看編譯器認爲函數復不復雜。

4.內聯函數最好放在頭文件中。

以上就是本次介紹的全部知識點內容,感謝大家的學習和對神馬文庫的支持。

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