C++ inline關鍵字

1. C的延續
     C++是一門承上啓下的編程語言,沒有寫class他就是C語言,這也致使了不少編譯器既支持C++也支持C。inline關鍵字其實更多地出如今C語言當中,由於不少短小的工做函數能夠達到快速執行的效果。
     將函數聲明爲inline實際上表示編譯器會將inline函數粘貼到調用點處,省去了本來函數查找、調用的時間
2. inline使用原則
     要定義一個函數爲inline函數,須要知足如下原則:
            1)不可包含複雜的結構控制語句,包括循環控制和複雜的條件控制,例如while, switch。
            2)不可包含遞歸函數
     inline函數使用無非是平衡「 函數調用開銷 vs  函數執行開銷」,因此一個簡小的函數要重複調用時,inline函數有必定優點。例以下面的call( )函數。
#include <iostream>
using namespace std;
inline int call( ){
    static int ctr =1;
    return ctr++;    
}
int main(){
    for(int i=0; i<500; i++)
        cout<<call()<<" "<<endl;
}
     執行過程當中將call( )函數粘貼到int main()函數中的調用點「 cout<<call( )<<" "<<endl 」處。
    不少人可能有疑問,在PC上沒有感受明顯速度優點。可是在不少處理器功能很弱的8位、16位的嵌入式系統中,inline函數能夠節約很是客觀的時間消耗。
3. inline函數定義在頭文件
     這不是絕對的,若是不少.cpp都須要這個inline函數,那麼理應定義在.h中,方便函數引用、拓展。試想,你也不情願每一個函數文件中都用外部函數調用來解決
extern inline int call( );
     不一樣的是,.h中的普通函數只要函數聲明便可。對應到Java,能夠理解爲Java中的抽象方法。如聲明頭文件Test.h:
#ifndef TEST_H_
#define TEST_H_
bool sort_elem(int &elem);
inline int call( ){
    static int ctr =1;
    return ctr++;    
}
#endif /* TEST_H_ */
     inline函數不單單要聲明,還須要定義。這樣才容易被多個文件存取。
————————————————
版權聲明:本文爲CSDN博主「光膀走天涯」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接及本聲明。
原文連接:https://blog.csdn.net/zxy1198186906/article/details/82151032
相關文章
相關標籤/搜索