Я разрабатываю класс с некоторыми функциями, которые, по моему мнению, могут потребоваться расширить позже, но не сейчас. Если бы класс был расширен, я думаю, что это сделало бы создание экземпляра базового класса бессмысленным.
Например, скажем, мой базовый класс - это дерево. Один из подходов - просто поместить все, что дерево должно делать для моих целей, в класс дерева и оставить все как есть. Однако это дерево может быть полезно в других аспектах программы в будущем, поэтому я подумал о создании чистой виртуальной onNodeVisited
функции. Затем производные классы могут реализовать свою собственную версию onNodeVisited
и не беспокоиться о специфике обхода дерева, определенного в базовом классе.
Имеет ли смысл не использовать чистую виртуальную функцию и сохранить функциональность дерева и функциональность конкретного приложения в одном классе (виртуальный onNodeVisited
)? Или я должен сделать древовидный класс абстрактным и реализовать один подкласс для конкретной части приложения.