Скажем, у нас есть конкретный class Apple
. (Объекты Apple могут быть созданы).
Теперь кто-то приходит и получает абстрактную class Peach
от Apple. Он абстрактный, потому что он вводит новую чистую виртуальную функцию. Теперь пользователь Персика вынужден извлечь из него и определить эту новую функцию. Это общий шаблон? Правильно ли это делать?
Пример:
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
};
Примечание: имена надуманны и не отражают никакого реального кода (надеюсь). Никакие плоды не пострадали при написании этого вопроса.