1. 程式人生 > >C++_內聯函數

C++_內聯函數

特點 由於 相對 需要 執行時間 內存地址 函數聲明 font 保存

內聯函數的目的是為了提高程序運行速度所做的一項改進。

常規函數內聯函數的區別不在於編寫方式,而在於C++編譯器如何將它們組合到程序中。

編譯過程的最終產品是:可執行程序,由一組機器語言指令組成。運行程序時,操作系統將這些這令載入到計算機內存中。

常規的函數調用過程:執行到函數調用指令時,程序將在函數調用後立即存儲該指令的內存地址。並將函數參數復制到堆棧(為此保留的內存塊)。跳到標記函數起點的內存單元,執行函數代碼,然後跳回到地址被保存的指令處。來回跳躍並記錄跳躍位置意味著以前使用函數時有一定的開銷。

內聯函數提供另一種選擇,內聯函數的編譯代碼與其他程序代碼“內聯”起來了。編譯器將使用相應的函數代碼替換函數調用。這樣運行的速度比常規函數稍快,但是代價是需要占用更多內存。

應有選擇地使用內聯函數。如果執行函數代碼的時間比處理函數調用機制的時間長。則節省的時間很有限。如果代碼執行時間很短,則內聯調用可以節約相對多的時間。

要使用該特性,要在函數聲明前、函數定義前加上關鍵字inline;通常情況是省略原型,將整個定義放在本應提供原型的地方。

這裏要註意內聯函數的鏈接性是內部的,這意味著函數定義必須在使用函數的文件中。函數的定義和使用不能在不同的文件中。

其實內聯函數適合那種較短函數,多次調用的情況。

多次調用,由於內聯性的存在,提高了效率。

較短的函數,減少空間的占用,盡量減少內聯函數的弊端,占用空間的特點。

C++_內聯函數