c++不常用功能之——內聯函數

理解:

一、定義

百度百科:內聯函數從源代碼層看,有函數的結構,而在編譯後,卻不具備函數的性質。內聯函數不是在調用時發生控制轉移,而是在編譯時將函數體嵌入在每一個調用處。編譯時,類似宏替換,使用函數體替換調用處的函數名。一般在代碼中用inline修飾,但是能否形成內聯函數,需要看編譯器對該函數定義的具體處理。

二、爲什麼需要這個功能,沒有這個功能怎麼辦

百度百科:內聯擴展是用來消除函數調用時的時間開銷。它通常用於頻繁執行的函數。 一個小內存空間的函數非常受益。

編譯器可以決定哪些函數內聯 。 程序員很少或沒有控制哪些只能是內聯的,哪些不是。 給這種控制程度,作用是程序員可以選擇內聯的特定應用 。

三、該功能的具體應用

C++有三種方式實現內聯函數:

1. 將函數的定義寫在類定義的內部;

2. 在類定義內部的函數聲明上用inline顯式指定;

3. 在類定義體外部的函數實現上用inline顯式指定;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<iostream>
using namespace std;
class Sample
{
public:
    void inline01(){cout<<"haha 01" << endl;}
    inline void inline02() const;
};
 
void Sample::inline02() const
{
    cout << "haha 02" << endl;
}
inline void inline03()
{
   cout << "haha 03" << endl;
}
int main(int argc, char* argv[]){
    Sample s;
    s.inline01();
    s.inline02();
    inline03();
    return 0;
}

參考文獻:

http://www.jb51.net/article/48622.htm

http://www.cnblogs.com/whyandinside/archive/2012/09/23/2698952.html


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