C++中的內聯(inline)
阿新 • • 發佈:2021-12-20
普通函式
我們都知道,程式就是指令的集合。在執行程式時,作業系統將這些指令載入到計算機記憶體中。因此,每一組指令都有一個特定的記憶體地址。C++程式中的各個函式也有儲存的記憶體空間,當程式執行到函式呼叫時,大致是如下步驟:
(1)遇到函式呼叫指令時,會儲存下該呼叫指令的地址,同時將引數壓入堆疊中;
(2)然後跳到標記函式起點的記憶體單元當中,執行函式程式碼,將返回值放回到暫存器當中;
(3)根據之前儲存的地址,返回呼叫指令處,繼續執行。
舉個例子,就像看書時,看到書中突然出現一個名詞,然後書上說這個名詞在150頁有詳細解釋。那麼我們就會記下現在看到80頁了,然後翻到150頁看完解釋後,再返回80頁。
因此,在使用普通函式時由於需要來回跳轉所以它的執行速度比較慢,特別是需要呼叫很多次函式時。
行內函數
行內函數,顧名思義就是將編譯程式碼和其它程式碼 “內聯” 起來了,而不是像之前一樣分散在不同的地方了。行內函數在呼叫時,程式會直接使用行內函數程式碼的拷貝來替換呼叫指令。
由於內聯程式碼在執行的時候程式無需進行來回的跳轉,所以它的執行速度相對於普通函式能快點;不過它也有自己的缺點,那就是對記憶體得耗損,如果程式需要在十個地方呼叫同一個行內函數,那這個程式將會將這個程式碼拷貝10次。
要使用行內函數,只需要在函式的宣告或者定義前加上關鍵字inline即可。
另外,在類定義中定義的成員函式把函式宣告為內聯
參考連結:https://blog.csdn.net/m0_37962600/article/details/78332985