既存のクラスをベースに、新しいメンバを追加して、新たなクラスを作ることをクラスの継承という・・・。
これまで何度も出てきたclass_profileを基底クラス(ベース)にして、さらに4つの項目を追加したclass_detailを作る・・・。
あらためて、class_profileの定義は、
で、クラスの継承は、
class <派生クラス> : <アクセス修飾子> <基底クラス>{
<メンバ>
.
.
.
};
と書くので、class_detailは、
アクセス修飾子を変えると、基底クラスのpublicメンバにアクセスできる制限の範囲を変えられるが、まあすべて使えるようにしたいのでここはpublic・・・。
これまでの、名前(name_)、年齢(age_)、住所(address_)などのメンバ変数、ゲッター/セッターなメンバ関数はメンバ定義しなくても使える・・・。
加えて、電話番号(phonenumber_)、性別(sex_)、身長(height_)、体重(wieght_)とそのゲッター/セッターを新たに定義している。
ちなみにenum SEXは、
という列挙型で定義している・・・。
で、class_detailの全ての項目を一斉出力するoutput_detailは、
name_, age_, address_は基底クラスclass_profileのoutputメンバ関数を呼んでいる・・・。
新たに追加したphonenumber_ , sex_, height_, weight_はそのあと出力・・・。
まあ、sex_は列挙型なんでif文で文字列に・・・。
main関数は、
入力した項目をprofにsetしてoutput・・・。
そのあと、
入力した項目をdetにsetしてoutput_detail・・・。
実行すると、
$ ./inheritance name: Taro age: 20 address: Tokyo name_ = Taro age_ = 20 address_ = Tokyo name: Jiro age: 18 address: Osaka phonenumber: 11111111 sex(0: none, 1: male, 2: female): 1 height: 165 weight: 48 name_ = Jiro age_ = 18 address_ = Osaka phonenumber_ = 11111111 sex_ = MALE height_ = 165 weight_ = 48 $
こんな感じ・・・。
Sample/inheritance.cpp at master · bg1bgst333/Sample · GitHub