インライン関数を使用する状況
インライン関数は、プライベート データ メンバーにアクセスする関数のような小さな関数に使用するのが最適です。 これらの 1 行または 2 行の "アクセサー" 関数の主な目的は、オブジェクトに関する状態情報を返すことです。短い関数は、関数呼び出しのオーバーヘッドに敏感です。 長い関数は、呼び出すシーケンスと返すシーケンスにかかる時間が相対的に少なく、インライン展開の利点が少なくなります。
使用例
「関数呼び出しの結果」で使用した Point クラスは次のように最適化することができます。
// when_to_use_inline_functions.cpp
class Point
{
public:
// Define "accessor" functions as
// reference types.
unsigned& x();
unsigned& y();
private:
unsigned _x;
unsigned _y;
};
inline unsigned& Point::x()
{
return _x;
}
inline unsigned& Point::y()
{
return _y;
}
int main()
{
}
座標の操作はこういうクラスの利用時に比較的多い演算であると想定し、2 つのアクセサー関数 (前の例の x と y) を inline と指定すると、通常、次のオーバーヘッドを削減できます。
関数呼び出し (パラメーターの引き渡しおよびスタックへのオブジェクトのアドレスの配置を含む)
呼び出し元のスタック フレームの保持
新しいスタック フレームのセットアップ
戻り値のやり取り
元のスタック フレームの復元
呼び出し元に戻る