1. 程式人生 > 其它 >C++中的內聯(inline)

C++中的內聯(inline)

普通函式

  我們都知道,程式就是指令的集合。在執行程式時,作業系統將這些指令載入到計算機記憶體中。因此,每一組指令都有一個特定的記憶體地址。C++程式中的各個函式也有儲存的記憶體空間,當程式執行到函式呼叫時,大致是如下步驟:

  (1)遇到函式呼叫指令時,會儲存下該呼叫指令的地址,同時將引數壓入堆疊中;

  (2)然後跳到標記函式起點的記憶體單元當中,執行函式程式碼,將返回值放回到暫存器當中;

  (3)根據之前儲存的地址,返回呼叫指令處,繼續執行。

舉個例子,就像看書時,看到書中突然出現一個名詞,然後書上說這個名詞在150頁有詳細解釋。那麼我們就會記下現在看到80頁了,然後翻到150頁看完解釋後,再返回80頁。

因此,在使用普通函式時由於需要來回跳轉所以它的執行速度比較慢,特別是需要呼叫很多次函式時。

行內函數

  行內函數,顧名思義就是將編譯程式碼和其它程式碼 “內聯” 起來了,而不是像之前一樣分散在不同的地方了。行內函數在呼叫時,程式會直接使用行內函數程式碼的拷貝來替換呼叫指令。

  由於內聯程式碼在執行的時候程式無需進行來回的跳轉,所以它的執行速度相對於普通函式能快點;不過它也有自己的缺點,那就是對記憶體得耗損,如果程式需要在十個地方呼叫同一個行內函數,那這個程式將會將這個程式碼拷貝10次。

  要使用行內函數,只需要在函式的宣告或者定義前加上關鍵字inline即可。

  另外,在類定義中定義的成員函式把函式宣告為內聯

的,即便沒有使用 inline 識別符號。

參考連結:https://blog.csdn.net/m0_37962600/article/details/78332985