blog.dopana

Back

C++入門シリーズの最終回です。クラスはデータとそれを操作する関数を1つの単位にまとめます。オブジェクト指向プログラミングの核です。

クラスとは#

クラスは設計図です。オブジェクトはその設計図から作られる具体的な実体です。

アクセス指定子#

  • public: — どこからでもアクセス可能。
  • private: — クラス内部からのみアクセス可能。

データは通常privateにし、publicなメンバ関数をインターフェースにします。これがカプセル化です。

class Counter {
private:
    int count = 0;

public:
    void increment() { ++count; }
    int get() const { return count; }
};
cpp

外部コードはcountに直接触れません — increment()get()を通す必要があります。

コンストラクタ#

コンストラクタはオブジェクト生成時に実行されます。クラス名と同じ名前で、戻り値の型はありません:

class Player {
public:
    std::string name;
    int level;

    Player(std::string n, int l) : name(n), level(l) {}
};
cpp

メンバ初期化リスト : name(n), level(l)がメンバを設定します。オブジェクト生成には引数が必要です:

Player p("Ada", 5);
cpp

メソッド#

クラス内で宣言されたメンバ関数は、そのオブジェクトに対して動作します。末尾のconstはメソッドがオブジェクトを変更しないという約束です:

int getLevel() const { return level; }
cpp

実践的なカプセル化#

class BankAccount {
private:
    double balance = 0;

public:
    void deposit(double amount) {
        if (amount > 0) balance += amount;
    }

    double getBalance() const { return balance; }
};
cpp

残高は外部から負の値に設定できません — クラス自身がデータを制御します。

結論#

これでC++入門シリーズは完結です: 最初のプログラム、変数と型、制御フロー、関数、ポインタと参照、そしてクラス。各概念で小さなプログラムを書き、学び続けてください — 標準ライブラリとSTLが次の自然なステップです。

参考文献#