クラスと構造体 (C++ のみ)

C++ のクラスは、C 言語の構造体の拡張機能です。 構造体とクラスの唯一の相違点は、デフォルトによるアクセスが、 構造体メンバーは public アクセスで、クラス・メンバーは private アクセスであることです。 したがって、キーワードの class または struct を使用して、等価のクラスを定義できます。

例えば、以下のコードにおいて、クラス X は、構造体 Y と等価です。

class X {

  // private by default
  int a;

public:

  // public member function
  int f() { return a = 5; };
};

struct Y {

  // public by default
  int f() { return a = 5; };

private:

  // private data member
  int a;
};

構造体を定義してから、キーワード class を使用して、 その構造体のオブジェクトを宣言すると、 デフォルトによりそのオブジェクトのメンバーは、public のままです。 以下の例において、obj_X が、クラス・キー class を使用する詳述型指定子の使用を宣言していますが、main() は、obj_X のメンバーへのアクセスを行います。

#include <iostream>
using namespace std;

struct X {
 int a;
 int b;
};

class X obj_X;

int main() {
  obj_X.a = 0;
  obj_X.b = 1;
  cout << "Here are a and b: " << obj_X.a << " " << obj_X.b << endl;
}
上記の例の出力は、以下のとおりです。
Here are a and b: 0 1