內置函數
調用函數時需要一定的時間和空間的開銷(overhead), C++提供了一種提高效率的方法,即在編譯時將所調用函數的代碼直接嵌入到主調函數中,而不是將流程轉出去,這種函數叫內置函數,又稱內聯函數(inline function)。
The inline functions are a C++ enhancement feature to decrease the execution time of a program. Functions can be instructed to compiler to make them inline so that compiler can replace those function definition wherever those are being called.
注意:可以在聲明函數和定義函數同時寫 inline,也可以在其中一處聲明 inline,效果相同,都能按內置函數處理。
使用內置函數可以節省運行時間,卻增加了目標程序的長度。假設要調用10次 max 函數,則在編譯時先后將 max 代碼復制并插入 main 函數,這就增加了 main 函數的長度。因此,一般只將規模很小(一般為5個語句以下)而使用頻繁的函數聲明為內置函數。在函數規模很小的情況下,函數調用的食艱難開銷可能相當于甚至超過執行函數本身的時間,把它定義為內置函數,可大大減少程序運行時間。
內置函數不能包括復雜的控制語句,如循環語句和 switch 語句。
說明:對函數作 inline 聲明,只是程序設計者對編譯系統提出的一個建議,是建議性的,不是指令性的。并非一經指定,編譯系統就必須這樣做。例如,包含循環語句和 switch 語句的函數,或者一個包含1000行的函數,也不大可能在調用點展開,此時編譯系統就會忽略 inline 聲明,而按普通函數處理。
歸納起來,只有那些規模較小而又頻繁調用的簡單函數,才適合聲明為 inline 函數。