C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++のインライン関数とは?基本概念から実装例までわかりやすく解説

C++におけるインライン関数(inline function)は、クラスと組み合わせてよく使われる強力な機能です。関数をインラインとして宣言すると、コンパイラはコンパイル時に関数が呼び出されるすべての場所に、その関数のコードのコピーを直接埋め込みます。

インライン関数の注意点

インライン関数に変更を加えた場合、コンパイラはすべての呼び出し箇所のコードを再度置き換える必要があるため、その関数を利用しているすべてのコードを再コンパイルしなければならない点に注意しましょう。再コンパイルを行わなければ、古い処理内容のまま動作し続けることになります。

また、コンパイラは関数の定義が複数行にわたる場合など、インライン化が適切でないと判断したときには、inlineキーワードを無視することがあります。つまり、inline指定はあくまでコンパイラへの「要求」であり、必ずしもインライン展開が保証されるわけではありません。

インライン関数の定義方法

関数をインライン化するには、関数名の前にinlineキーワードを付けます。さらに重要なポイントとして、その関数を呼び出すコードより前に関数を定義しておく必要があります。

なお、クラス定義の中で関数を定義した場合、inlineキーワードを明示的に付けなくても、自動的にインライン関数として扱われます。

サンプルコード

以下は、インライン関数を使って2つの数値の最大値を返す例です。

#include <iostream>
using namespace std;

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

// プログラムのメイン関数
int main() {
    cout << "Max (20,10): " << Max(20,10) << endl;
    cout << "Max (0,200): " << Max(0,200) << endl;
    cout << "Max (100,1010): " << Max(100,1010) << endl;
    return 0;
}

実行結果

Max (20,10): 20
Max (0,200): 200
Max (100,1010): 1010

このように、インライン関数を使うことで、通常の関数呼び出しにかかるオーバーヘッドを抑えつつ、短い処理を効率的に記述できます。特にgetterのような小さな関数や、頻繁に呼び出される簡単な計算処理において効果を発揮します。

  1. C++のlog()関数とは?自然対数を求める方法をわかりやすく解説

    C++の標準ライブラリには、数学的な計算を行うための便利な関数が多数用意されています。その中でもlog()関数は、数値の自然対数(ネイピア数 e を底とする対数)を求めるために使用される重要な関数です。log()関数の基本情報C/C++のライブラリ関数 double log(double x) は、引数 x の自然対数(底が e の対数)を返します。この関数を使用するには、ヘッダーファイル <cmath> をインクルードする必要があります。関数の宣言double log(double x)パラメータと戻り値パラメータ: x は浮動小数点型(double)の値です。自然対数を求めたい

  2. C++のswap()関数とは?2つの変数の値を入れ替える方法をサンプルコード付きで解説

    swap()関数とは C++のswap()関数は、2つの値を入れ替える(交換する)ための関数です。この関数を利用すれば、一時的な第三の変数を自分で用意することなく、2つの変数の値を簡単に入れ替えることができます。 swap()関数の構文 void swap(int variable_name1, int variable_name2); 変数に値を代入してswap()関数に渡した場合、関数内では値の入れ替えが行われますが、呼び出し元の実際の変数の値は変わりません。これは、引数が「値渡し」で渡されるためです。実際の変数の値を入れ替えたい場合は、後述する「参照渡し」を使用します。 例1:s