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