inline函式:函式呼叫點**直接展開(文字替換) 沒了開棧和清棧的開銷,效率高
inline int sum(int a,int b)
return a+b;
1.inline 函式和普通函式的區別:
inline函式只能在本檔案可見
2.inline函式和static修飾的函式的區別:有呼叫函式的開銷
static會在符號表裡把global符號-->local函式
3.inline函式和巨集的區別:
inline 編譯 安全檢查機制,型別檢查
巨集 預編譯 無安全檢查機制
4.為什麼不把所有函式預設為內聯?
inline 以**膨脹為代價--->空間換時間 -->過度--.>空間消耗,效率降低
建議:函式體執行的開銷》函式開棧和清棧的開銷,不建議
inline特徵:
1.inline 寫在.**件(本檔案可見)
2.inline 只在 release版本生效
3.inline只是給編譯器的乙個建議 (遞迴,迴圈 編譯器不設inline)
4.inline是基於實現的,不是基於宣告的
引用-->別名
int main()
int a=10;
int &b=a;
return 0;
底層實現--->以指標的方式來實現的
引用的特點:
1.初始化
2.引用不能改變
3.引用是不能引用取位址的資料
4.引用變數只能使用所引用的記憶體單元
inline 內聯函式
一 inline關鍵字用來定義乙個類的內聯函式,引入它的主要原因是用它替代c中表示式形式的巨集定義。表示式形式的巨集定義一例 define expressionname var1,var2 var1 var2 var1 var2 為什麼要取代這種形式呢,且聽我道來 1 首先談一下在c中使用這種形式巨...
inline內聯函式
技術類筆試題50 都會問巨集與inline的區別,自己去找找看?1 巨集替換發生在預編譯 2 巨集函式 如果可以這麼叫的話 替換時不會檢查引數,inline函式會檢查 3 巨集一定會發生替換,inline貌似不是強制的,編譯器想不替換也沒關係 4 巨集替換時存在著一些不可避免的陷阱 參見c trap...
inline內聯函式
一 內聯函式 內聯函式是指用inline關鍵字修飾的函式 它與普通函式所不同之處只在於函式呼叫的處理。普通 函式進行呼叫時,要將程式執行權轉到被呼叫函式中,然後再返回到呼叫它的函式中 內聯函式不是在呼叫時發生執行權轉移,而是在編譯時將 函式 體 嵌入在每乙個呼叫處。編譯時類似巨集替換,使用 函式體替...