C++ 速查手冊

8.7 - inline 函數

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

#include <iostream>
  
inline int max(int a, int b) {
    return a > b ? a : b;
}

int main() {
    std::cout << max(55, 22) << std::endl;
    std::cout << max(2, 214) << std::endl;
    
    return 0;
}

/* 《程式語言教學誌》的範例程式
   https://kaiching.org/
   檔名:u0807.cpp
   功能:示範 C++ 的函數
   作者:張凱慶*/

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

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

編譯器 (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 函數的定義宣告會直接放在標頭檔之中。

上一頁 8.6 - lambda 函數
回 C++ 速查手冊首頁
下一頁 8.8 - 多載函數
回 C++ 教材
回程式語言教材首頁