C++において重要なクラスの継承についてのメモ。
C++のクラスの継承
継承は1つのクラスが他のクラスの性質を受け継ぐための仕組み。
あるクラスを別のクラスが継承する場合、継承される側のクラスを「基本クラス」継承する側のクラスを「派生クラス」と呼ぶ。
基本クラスを継承する形式
[code]
class 派生クラス名 : アクセス指定子 基本クラス名 {
};
[/code]
※クラスの定義は最後にセミコロンを忘れないように注意する。
アクセス指定子と範囲
修飾子 | 説明 |
---|---|
なし | クラス内から使用可能(privateと同じ) |
public | 外部のクラスから使用可能 | private | クラス内から使用可能 |
protected | privateと同じ(サブクラスからはpublicになる) |
基本クラス
[code]
class BaseSample {
int i;
public:
void set_i(int n);
int get_i();
};
[/code]
派生クラス
[code]
class DerivedSample : public BaseSample {
int j;
public:
void set_j(int n);
int mul();
};
[/code]
クラスの継承サンプルコード
[code]
#include
using namespace std;
// 基本クラス
class BaseSample {
int i;
public:
void set_i(int n);
int get_i();
};
// 派生クラス
class DerivedSample : public BaseSample {
int j;
public:
void set_j(int n);
int mul();
};
// 基本クラスの変数iを設定
void BaseSample::set_i(int n)
{
i = n;
}
// 基本クラスの変数iの値を返す
int BaseSample::get_i()
{
return i;
}
// 派生クラスの変数jを設定
void DerivedSample::set_j(int n)
{
j = n;
}
// 基本クラスの変数iの値に派生クラスの変数jの値を乗算し返す
int DerivedSample::mul()
{
// 基本クラスの公開メンバ関数の呼び出し
return j * get_i();
}
int main(void)
{
DerivedSample obj_d;
obj_d.set_i(10);
obj_d.set_j(20);
cout << obj_d.mul(); // 200 が表示される return 0; } [/code]
まとめ
上記クラスの継承サンプルコードでは派生クラス DerivedSample の mul() から基本クラス BaseSample の get_i() を呼び出している。BaseSample の変数iへは直接アクセス出来ないようにしカプセル化を実現している。