オーバーライドの練習

汎化 ⇔ 特化
ここまで勉強すると、設計の方針は2種類の方向性が出てくる。

  • クラスの機能を増やしていき、継承先の機能をどんどん特殊化していく方向の設計方法
  • クラスの最終形を先に設計し、それぞれの派生クラスの共通部分をベースとして抜き出す方法
  • 宣言時に仮想関数に=0を付ける(意味不明)
  • 純粋仮想関数は同じクラス内では実装しない関数 ⇒ 必ず派生先ではオーバーライドされる関数になる(じゃないとインスタンス化できない)
  • 純粋仮想関数を含むクラスはインスタンス化できない(授業で言わなかったけど、そういうクラスを抽象クラスっていうよ)

実践編

汎化+オーバーライドで、RPGのキャラを作ってみよう!
・・・今作成中のはず

主人公(cChara) setter getter constructorも欲しいね
属性(メンバ変数)
 ・名前(string)
 ・腕力 (int)
-------------------------
機能(メンバ関数)
 ・名乗る(自己紹介) 表示のみ ↓
 ・戦う(なぐる)   
 ・防御(身を守る)
 ・逃げる(逃亡)
  ・特殊攻撃(オーバーライド用 職業別攻撃)
   =0 で純粋仮想関数になるよ
-------------------------
 →戦士(cWarrior)
 ・特殊攻撃はない
 →魔法使い(cWizard)
 ・魔法(魔力で攻撃)
 →盗賊(cThief)
 ・ぬすむ(戦士から金を盗む)
  • game-engineer/classes/2021/game-programing-1/second-term/02/02-08-1.txt
  • 最終更新: 4年前
  • by root