継承

既存のクラスをベースに、新しいメンバを追加して、新たなクラスを作ることをクラスの継承という・・・。
これまで何度も出てきた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