C++ class クラスとは?

クラスとは?

C++には、C言語にはなかったクラスと言う機能があります。

C言語には、複数の変数をまとめて一つの型として使える「構造体」
と言う機能がありましたが、
クラスは、その構造体に、関数も含める事ができる機能です。

つまり、クラスの中には、
複数の変数複数の関数が含まれている事になります。

それゆえに、クラスは、
クラス1つで単独の機能・仕事を行うのに適しています。

クラスは、構造体と同じく、独自のユーザ定義型です。

構造体と同じように定義すれば、宣言して使う事ができます。

また、変数と違い、クラスは、変数や関数を含む複合体なので、
クラスをオブジェクトと表現する事があります。

クラスの定義方法

クラスの定義には、キーワードclassを使います。

そして、変数や関数を書いていきます。

クラス内に宣言される変数や関数をクラスメンバと呼び、
それぞれ、メンバ変数メンバ関数と呼びます。

#include <iostream>

using namespace std;

class hito {      // 新しいクラス hitoを定義
public:
int age;
int sinchou;
int taiju;

void show_age() {
      cout << "年齢は" << age << "です" << '\n';
}

void show_sinchou() {
      cout << "身長は" << sinchou << "です" << '\n';
}

void show_taiju() {
      cout << "体重は" << taiju << "です" << '\n';
}

};

キーワードpublic:については、
アクセス指定子についてで説明する事にします。

スポンサーリンク

クラスの使い方

クラスを定義し、変数や構造体のように宣言すれば
使用する事ができます。

hito satou;

これは、hito型クラスの定義内容がコピーされて、
satouと言うオブジェクトが作られた事を示します。

このコピーされたオブジェクトsatouの事をインスタンスと呼びます。

hito satou;               // hito型オブジェクトの作成
hito *p;                  // hito型オブジェクトのポインタ
class hito suzuki;        // 先頭にclassをつけてもOK

/********** 通常の使い方 **********/
satou.age = 20;           // メンバ変数に代入
satou.sinchou = 170;      // メンバ変数に代入
satou.taiju = 60;         // メンバ変数に代入

satou.show_age();         // メンバ関数呼び出し
satou.show_sinchou();     // メンバ関数呼び出し
satou.show_taiju();       // メンバ関数呼び出し

/********** ポインタ形式の使い方 **********/
p = &satou;
p->age = 30;              // メンバ変数に代入
p->sinchou = 180;         // メンバ変数に代入
p->taiju = 90;            // メンバ変数に代入

p->show_age();            // メンバ関数呼び出し
p->show_sinchou();        // メンバ関数呼び出し
p->show_taiju();          // メンバ関数呼び出し

クラスのメンバに含める事ができるのは、
メンバ変数やメンバ関数はもちろんですが、
クラス内にクラスや構造体、共用体、列挙型なども含める事は可能です。

また、マニアックですが、typedefなども使う事ができます。
この場合、typedefを記述したクラス内だけの適用となります。