【C++】インライン関数とは?クラス定義内でメンバ関数を実装する方法

目次

はじめに

C++のクラスでは、メンバ関数の「宣言(プロトタイプ)」をクラス定義内で行い、「実装(処理内容)」をクラスの外部で行うのが一般的です。しかし、処理が非常に短い関数の場合、宣言と実装を分けて書くのが少し冗長に感じられることがあります。

このような場合に、クラス定義の中でメンバ関数の処理内容まで直接記述することができます。このように定義された関数は、コンパイラによって「インライン関数」として扱われ、パフォーマンスが向上する可能性があります。

この記事では、メンバ関数をインラインで実装する方法と、通常の(非インラインの)実装方法との違いについて解説します。


インライン関数と通常関数のサンプルコード

このコードは、Productクラスの中に、2種類のメンバ関数を定義します。

  • getID(): インライン関数として、クラス定義の中で実装します。
  • display(): 通常の関数として、クラス定義の外で実装します。

完成コード

#include <iostream>
#include <string>

using namespace std;

class Product {
private:
    int id;
    string name;

public:
    // コンストラクタ
    Product(int i, string n) {
        id = i;
        name = n;
    }

    // --- 1. インライン関数 ---
    // クラス定義の中で、処理内容まで記述する
    int getID() {
        return id;
    }
    
    // --- 2. 通常のメンバ関数(プロトタイプ宣言のみ) ---
    void display();
};

// --- 通常のメンバ関数の実装 ---
void Product::display() {
    cout << "ID: " << id << ", 商品名: " << name << endl;
}


int main() {
    Product item(101, "高機能マウス");
    
    // 通常のメンバ関数を呼び出し
    item.display();
    
    // インライン関数を呼び出し
    cout << "取得したID: " << item.getID() << endl;
    
    return 0;
}

コードの解説

1. インライン関数 (getID)

int getID() {
    return id;
}

getID関数は、Productクラスの定義ブロック {}内側に、その処理内容 { return id; } まで全て記述されています。このように記述された関数は、コンパイラに対して「この関数をインライン展開してください」というヒント(指示)になります。

インライン展開とは? 通常、関数が呼び出されると、プログラムの実行は関数の本体がある場所にジャンプし、処理が終わると元の場所に戻ってきます。このジャンプには、ごくわずかながらコストがかかります。

インライン関数は、コンパイラが「呼び出し」のコードを、関数の処理内容そのものに直接置き換えることがあります。これにより、関数呼び出しのコストがなくなり、パフォーマンスが向上する可能性があります。

2. 通常のメンバ関数 (display)

void display(); のように、クラス定義の中では関数のプロトタイプ宣言だけを行い、実際の処理内容は void Product::display() { ... } のようにクラスの外側で実装しています。これがC++の標準的なメンバ関数の実装方法です。


インライン関数の使いどころ

インライン化は、関数呼び出しのオーバーヘッドを削減しますが、コードが展開されるため、多用すると最終的な実行ファイルのサイズが大きくなるというデメリットもあります。

経験則として、インライン化するのは、getID() のように、処理が1〜2行で終わるような、ごくごく短い関数に限定するのが一般的です。

privateなメンバ変数の値を返すだけの「ゲッター」や、値を設定するだけの「セッター」などが、インライン関数の良い候補となります。


まとめ

今回は、C++のインライン関数の基本的な使い方を解説しました。

  • クラス定義の中で処理内容まで実装されたメンバ関数は、インライン関数となる。
  • 関数呼び出しのコストが削減され、パフォーマンスが向上する可能性がある。
  • 処理がごく短い関数(ゲッター、セッターなど)での使用に限定するのが一般的。

インライン関数は、パフォーマンスを最適化するための一つの手段ですが、可読性やファイルサイズの観点から、適切に使い分けることが重要です。

副業から独立まで「稼げる」Webスキルを習得する(PR)

ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。

「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。

このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。

講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。

副業に特化した強み

  • 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
  • AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
  • 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。

受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。

受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。

ブログで稼ぎたいなら「メイカラ」

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次