具体的な があるとしましょうclass Apple
。class Peach
(Apple オブジェクトはインスタンス化できます。) さて、誰かがやって来て、Apple から抽象を導き出します。新しい純粋仮想関数を導入するため、抽象的です。Peach のユーザーは、Peach から派生させて、この新しい関数を定義することを余儀なくされています。これはよくあるパターンですか?これは正しいですか?
サンプル:
ここで、具体的な があるとしましょうclass Apple { public: virtual void MakePie(); // more stuff here };
class Peach : public Apple { public: virtual void MakeDeliciousDesserts() = 0; // more stuff here };
class Berry
。class Tomato
誰かがベリーから要約を導き出します。これは、Berry の仮想関数の 1 つを上書きして純粋な仮想関数にするため、抽象的です。Tomato のユーザーは、Berry で以前に定義された関数を再実装する必要があります。これはよくあるパターンですか?これは正しいですか?
サンプル:
注: 名前は考案されたものであり、実際のコードを反映していません (うまくいけば)。この質問の執筆において、果物は害を受けていません。class Berry { public: virtual void EatYummyPie(); // more stuff here };
class Tomato : public Berry { public: virtual void EatYummyPie() = 0; // more stuff here };