【C++】
クラス / Class
クラスとは
データを操作する命令を備えた道具箱で、下記のメンバーを保持することができる。
- フィールド
- コンストラクタ
- プロパティ
- メソッド
- イベント
コンストラクタ・・・オブジェクト宣言時に初期値を設定する特殊な初期化関数。
デストラクタ ・・・オブジェクトが消滅する時、その後始末をする後処理関数。
クラス名 : mycls ・・・クラス名の例
コンストラクタ名 : mycls ・・・クラス名と同じ
デストラクタ名 : ~mycls・・・クラス名に~がつく
Back
アクセス修飾子の種類
public |
クラス外からでも利用可能
構造体(struct)のメンバでアクセス修飾子を指定しない場合のデフォルト。
|
protected |
同一クラス内と、そのクラスを継承する派生クラス(サブクラス)内からの利用が可能。
|
private |
同一クラス内からのみ利用可能。
同一クラスであれば他のインスタンスからもアクセス可能。
クラス(class)のメンバーでアクセス修飾子を指定しない場合のデフォルト。
|
クラスの変数宣言
クラスの宣言・定義
class クラス名{
private:
//「private」は、クラス外からアクセスできないエリア
//クラス内でのみ利用したい変数・関数などを記述
//データメンバ
protected:
//クラス内と継承した派生クラスだけがアクセスできるエリア
public:
//「public」は、クラス外からアクセスできるエリア
//クラスで呼び出された時に利用したい変数・関数などを記述
//メンバ関数
};
クラスにおける宣言・定義のフォーマット
class クラス名{
アクセス修飾子 :
型 変数名;
関数 関数名(引数){
処理
}
アクセス修飾子 :
型 変数名;
関数 関数名(引数){
処理
}
};
コンストラクタとデストラクタ
「コンストラクタ」と「デストラクタ」は、インスタンスが作成・破棄された時に実行される関数。
コンストラクタ=「クラス名と同名()」
デストラクタ=「〜クラス名と同名()」
と定義される。
コンストラクタは、
インスタンスが作成されたときに行う動作を定義する関数で、
クラス名と同じ名前の関数をクラス内に作成すると、
インスタンスを作成したときに、クラス名と同じ関数が実行される。
コンストラクタは、オーバーロード(多重定義)が可能。
デストラクタは、
クラス名と同名の関数名の前に「〜」をつけた「〜関数名」と記述することで、デストラクタとなる。
デストラクタは、インスタンスを破棄(クラスの使用をやめる)時に実行されるもの。
Back
クラスの継承
クラスの継承は、クラスに新しい機能を追加して、新しいクラスを作り出すことを言う。
クラスの継承をするには、クラスを作成する時に、クラス名に継承するクラスのを明記すればクラス継承ができます。
//継承クラス作成の宣言
class 継承クラス名:継承修飾子 元のクラス名{
private:
public:
};
継承修飾子
継承修飾子は、基底クラス(元のクラス)の引き継ぎ方を指定する修飾子。
public |
基底クラス(元のクラス)で設定したアクセス修飾子をそのまま継承する場合に指定する。
|
protected |
基底クラス(元のクラス)で、「public」と指定されたものを「protected」に変更し、他はそのままにして継承する場合に指定する。
|
private |
基底クラス(元のクラス)の全てを「private」に変更して継承する場合に指定する。
|
Back
クラスの使用方法
クラスを使用する場合、
・インスタンスを作成する
・インスタンス名を使って、クラス内の「変数」「関数」を利用する
インスタンスは、何個でも作れる。
//インスタンスの作成
クラス名 インスタンス名;
//インスタンス作成と同時に、コンストラクタに引数を渡す時のインスタンス作成
クラス名 インスタンス名(引数);
//クラス内の関数を実行
インスタンス名.関数名(引数);
//ポインタでのインスタンス作成
クラス名 *ポインタ名;
ポインタ名=new クラス名;
ポインタ名->関数名(引数);
Back