理解:
一、定義
百度百科:內聯函數從源代碼層看,有函數的結構,而在編譯後,卻不具備函數的性質。內聯函數不是在調用時發生控制轉移,而是在編譯時將函數體嵌入在每一個調用處。編譯時,類似宏替換,使用函數體替換調用處的函數名。一般在代碼中用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