オーバーライドの練習
今日やった事
汎化 ⇔ 特化
ここまで勉強すると、設計の方針は2種類の方向性が出てくる。
- クラスの機能を増やしていき、継承先の機能をどんどん特殊化していく方向の設計方法
- クラスの最終形を先に設計し、それぞれの派生クラスの共通部分をベースとして抜き出す方法
純粋仮想関数=0
- 宣言時に仮想関数に=0を付ける(意味不明)
- 純粋仮想関数は同じクラス内では実装しない関数 ⇒ 必ず派生先ではオーバーライドされる関数になる(じゃないとインスタンス化できない)
- 純粋仮想関数を含むクラスはインスタンス化できない(授業で言わなかったけど、そういうクラスを抽象クラスっていうよ)
実践編
汎化+オーバーライドで、RPGのキャラを作ってみよう!
・・・今作成中のはず
主人公(cChara) setter getter constructorも欲しいね 属性(メンバ変数) ・名前(string) ・腕力 (int) ------------------------- 機能(メンバ関数) ・名乗る(自己紹介) 表示のみ ↓ ・戦う(なぐる) ・防御(身を守る) ・逃げる(逃亡) ・特殊攻撃(オーバーライド用 職業別攻撃) =0 で純粋仮想関数になるよ ------------------------- →戦士(cWarrior) ・特殊攻撃はない →魔法使い(cWizard) ・魔法(魔力で攻撃) →盗賊(cThief) ・ぬすむ(戦士から金を盗む)