class
構造体(struct)に関数が追加できるようになってその関数で自らの変数をいじり倒せるみたいなやつだと認識
実は構造体にも関数は追加できる
というか、structとclassの違いはデフォルトのアクセシビリティがprivateかpublicかの違い
特に意識しないのなら、struct使うほうが良いと思う…(?)
アクセス制限について
アクセス制限とは…?→「hogeclass.value」みたいな感じでメンバ変数/関数が外から参照できるかどうか
例えばマクドに行った時、客ができることは「注文」だけで、調理はできない。→利用者が使える範囲を制限することで「客が中にズカズカ入り込んでポテト揚げる」みたいなことができないようにしている。
public, private, protected の3つのアクセス制限を行うことができる。classはデフォルトがprivateになってる(確か)。
public…ここに書いてある変数とか関数は自由に使っちゃっていいよ(外から使える)
private…ここの変数とか関数は企業秘密や!!見るんやない!
publicに置いた関数(メンバ関数)とかを使って間接的に操作することは可能
protected…privateだと派生クラスのメンバ関数から参照できない。派生クラスを作るとき用。
継承
classは継承するとメンバ変数とかメンバ関数が受け継がれる
俗に言う「使い回し」ってことか…?
コンストラクタ
classの名前そのままの関数をコンストラクタといい、クラスが宣言された時に1回だけ実行される。初期化はここで。
private内に書いておかないといけない。
逆に、~classの名前 で、デストラクタが使え、変数の後始末をする。
structと何が違うの?
デフォルトのアクセシビリティがpublic(struct)かprivate(class)か、という違いらしい。
使い方
code:hoge.cpp
class Pocala{
public:
int a;
int b;
Pocala(){ // コンストラクタは戻り値がなく、クラスと同じ名前
a = 10;
b = 30;
}
};
code:hoge2.cpp
class Pocala {
int a; // ここはprivateになっているので、直接参照はできない
public:
Pocala() {
a = 10;
cout << "コンストラクタっ!" << endl;
}
void hoge() {
cout << "ほげほげ〜!" << endl;
}
void get() {
cout << a << endl;
}
};
int main() {
Pocala a;
a.get();
a.hoge();
}