假设我们有一个具体的class Apple
. (Apple 对象可以被实例化。)现在,有人来了,并class Peach
从 Apple 派生了一个抽象。它是抽象的,因为它引入了一个新的纯虚函数。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 的一个虚函数,并使其成为纯虚函数。Tomato 的用户必须重新实现之前在 Berry 中定义的功能。这是一种常见的模式吗?这是正确的做法吗?
样本:
注意:名称是人为的,不反映任何实际代码(希望如此)。写这个问题没有损害任何成果。class Berry { public: virtual void EatYummyPie(); // more stuff here };
class Tomato : public Berry { public: virtual void EatYummyPie() = 0; // more stuff here };