C++ 速查手冊 V1.00 - 單元 8.7 - inline 函數




inline 函數定義經常重複的小型工作模組,例如


001 #include <iostream>
002
003 inline int max(int a, int b) {
004     return a > b ? a : b;
005 }
006
007 int main() {
008    std::cout << max(55, 22)
009              << std::endl;
010    std::cout << max(2, 214)
011              << std::endl;
012
013    return 0;
014 }
015
016 /* Kaiching Chang 
017    u0807.cpp
018    2014-02 */

這裡定義了一個 inline 函數,工作為判斷兩個參數的大小,並且回傳較大值


003 inline int max(int a, int b) {
004     return a > b ? a : b;
005 }

編譯器 (compiler) 會將 inline 函數的部份最佳化,通常會把 inline 函數的程式直接插入執行檔編譯,避免過多的函數呼叫,因此上例會變成


    std::cout << 55 > 22 ? 55 : 22
              << std::cout;
    std::cout << 2 > 214 ? 2 : 214
              << std::cout;

所以 inline 函數的目的除了提高效能外,也在於提供一個符合語意的名稱,此例編譯執行結果如下


$ g++ u0807.cpp
$ ./a.out
55
214
$

通常 inline 函數的定義宣告會直接放在標頭檔之中。

continue ...

沒有留言: