1. 程式人生 > 實用技巧 >c++中的行內函數

c++中的行內函數

一、介紹

c++中行內函數通常和類一起使用,行內函數使用關鍵字inline修飾。如果一個函式是行內函數,那麼在編譯時,編譯器會將符合行內函數的行內函數程式碼副本插入到呼叫的地方。如果行內函數的行數過多,編譯器會忽略inline限定符,不會採用行內函數的處理方式處理。

在類定義中的定義的函式都是行內函數,即使沒有使用inline說明符。

#include <iostream>
using namespace std;

inline int max(int x, int y)
{
    return (x > y) ? x : y;
}

inline int get_sum(int
x, int y) { int a = x; int b = y; return a + b; } int main() { cout << max(3, 4) << endl; cout << get_sum(3, 4) << endl;//get_sum函式行數超過1行,編譯器會當作普通函式處理 //輸出 // 4 // 7 }

二、行內函數和巨集定義的區別

1.行內函數和普通函式

行內函數與普通函式相比,行內函數在編譯期間編譯器把行內函數代直接替換到了程式碼呼叫上下文,執行時不需要進行中斷和壓棧出棧等操作,可以提高程式效率。

2.行內函數和巨集

行內函數是在編譯時進行程式碼嵌入替換,而巨集只是簡單的字元替換,不會進行型別檢查等,行內函數會進行引數型別檢查。

3.行內函數適用於一個簡單邏輯的函式重複呼叫。而巨集適用於實現多步操作的封裝。