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