0Pricing
C++ Academy · レッスン

メンバー変数とメソッド

メンバー変数を宣言し、メンバーメソッドを記述して、インスタンスから参照します。

「メンバー変数とメソッド」はCoddyKit上の無料C++ Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC++ Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C++ Academyコースには全4レッスンが含まれています。

クラスのメンバー

クラスには次の要素を含められます。

  • メンバー変数(データ。フィールドと呼ばれることもあります)
  • メンバー関数(メソッド)
  • ネストした型(typedef、列挙型、クラス)
  • 静的メンバー(すべてのインスタンスで共有)

メンバー変数を宣言する

メンバー変数はクラス本体で宣言します。読みやすくするため、C++11のクラス内デフォルト初期化子を使ってください。

class Person {
    std::string name_ = "unknown";
    int age_ = 0;
public:
    // ...
};

命名規則

privateメンバーには、次のような一般的な規則があります。

  • 末尾にアンダースコアを付ける:name_
  • 先頭にm_を付ける:m_name
  • 暗黙のthis->を使った通常の名前

どれか1つを選び、一貫して使ってください。

クラス内でメソッドを定義する

短いメソッドはクラス本体内でインライン定義できます。この場合、暗黙的にinlineになります。

class Counter {
    int n_ = 0;
public:
    void increment() { ++n_; }
    int value() const { return n_; }
};

クラスの外でメソッドを定義する

長いメソッドは通常、クラスの外、たとえば.cppファイルで定義します。スコープ解決演算子::を使ってください。

// header
class Logger {
public:
    void log(const std::string& msg);
};

// implementation
void Logger::log(const std::string& msg) {
    std::cout << "[LOG] " << msg << "\n";
}

メソッドを呼び出す

オブジェクトにはドット構文を、ポインターにはアロー構文を使います。

Counter c;
c.increment();

Counter* p = &c;
p->increment();

constメソッド

オブジェクトを変更しないメソッドにはconstを付けてください。constインスタンスに対しても呼び出せます。

class Counter {
    int n_ = 0;
public:
    int value() const { return n_; }   // does not modify *this
};

静的メンバー

静的メンバーはインスタンスではなくクラスに属します。staticを付けて宣言し、ソースファイルで定義します。

class Logger {
public:
    static int messageCount;
    static void log(const std::string& msg);
};
int Logger::messageCount = 0;

アクセス指定子

アクセスレベルは3つあります。

  • public — どこからでもアクセス可能
  • private — クラス内部からのみアクセス可能
  • protected — クラス内部と派生クラスからアクセス可能

カプセル化の実践

データメンバーはprivateにしてください。不変条件を保証するメソッドを通じて公開します。

class Temperature {
    double celsius_ = 0.0;
public:
    void setCelsius(double c);     // validates range
    double celsius() const { return celsius_; }
    double fahrenheit() const { return celsius_ * 9.0/5.0 + 32; }
};

メソッドと自由関数

すべてをメソッドにする必要はありません。publicインターフェイスだけを使う関数なら、自由関数を優先してください。結合を減らせます。

クイックチェック

メンバー関数がオブジェクトを変更しないことを示すキーワードは何ですか?

まとめ

メンバー変数はインスタンスごとの状態を保持し、メソッドはその状態を操作します。変更しないメソッドにはconstを付けてください。データはprivateにし、意図を明確にした小さなpublicインターフェイスを通じて振る舞いを公開します。

よくある質問

「メンバー変数とメソッド」レッスンは無料ですか?

はい。「メンバー変数とメソッド」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C++ Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C++ Academyコースには全4レッスンが含まれています。

「メンバー変数とメソッド」で何を学びますか?

メンバー変数を宣言し、メンバーメソッドを記述して、インスタンスから参照します。 ブラウザで直接実行するハンズオンコードでC++ Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

C++ Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのC++ Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「メンバー変数とメソッド」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このC++ Academyレッスンでコードを書いて実行できますか?

はい。すべてのC++ Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. structとclassの使い分け
  2. メンバー変数とメソッド
  3. コンストラクターとメンバー初期化子リスト
  4. thisポインターとカプセル化
← C++ Academyに戻る