為解決**中頻繁呼叫小函式,消耗大量棧空間的問題,因而引入修飾符inline。
執行速度比常規函式稍快,但以**「膨脹為代價」
函式內聯,節約的是處理函式呼叫機制的時長。若函式執行時間短,函式內聯的效益較高,反之效益降低
使用限制:
(1)不可遞迴使用
(2)函式體較大的時候不適合使用
(3)必須和函式定義放在一起才能成為內聯,僅放在函式宣告前不起任何作用
適用場景:
(1)類似:
inline double squre(x)
這樣一行就可實現的簡短函式
(2)類的成員函式中用於成員變數訪問的函式
(3)注:像這樣直接在類中定義的成員函式
class a
//}
自動會成為內聯函式
但規範一些還是寫成
// 標頭檔案
class a
// 定義檔案
inline void a::foo(int x, int y){}
c++ primer plus
C inline 內聯函式
內聯函式 1 內聯函式定義和作用 將乙個函式宣告為inline,那麼函式就成為內聯函式。內聯函式通常就是它在程式中每個呼叫點上 內聯地 展開。從定義上看,內聯函式跟一般函式不一樣,一般函式呼叫的時候是需要呼叫開銷的 比如出棧入棧等操作 內聯函式從定義上看更像是巨集,但是跟巨集不一樣。內聯函式的作用主...
C inline內聯函式探索
學過程式編譯的人知道,呼叫函式需要cpu執行引數壓棧 暫存器儲存與恢復 跳轉指令等操作,開銷比較大,高頻繁的呼叫函式對效能有影響,在c c 語言裡產生了macro巨集,由於巨集不是函式不會產生上述開銷,是一種比較好的優化,但巨集不是強型別程式設計,於是vc 產生了inline內聯函式,inline優...
C inline內聯函式使用規則
inline函式的作用 定義 內聯函式避免頻繁呼叫函式對棧記憶體重複開闢所帶來的消耗,但是不能包含複雜的結構控制語句例如while switch,並且內聯函式本身不能直接呼叫遞迴函式 自己內部還呼叫自己的函式 在c 中,為了解決一些頻繁呼叫的小涵數大量消耗棧空間或者是叫棧記憶體的問題,特別的引入了i...