クラスとは?
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を記述したクラス内だけの適用となります。