Чистая виртуальная функция или виртуальная функция?

Я разрабатываю класс с некоторыми функциями, которые, по моему мнению, могут потребоваться расширить позже, но не сейчас. Если бы класс был расширен, я думаю, что это сделало бы создание экземпляра базового класса бессмысленным.

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

Имеет ли смысл не использовать чистую виртуальную функцию и сохранить функциональность дерева и функциональность конкретного приложения в одном классе (виртуальный onNodeVisited )? Или я должен сделать древовидный класс абстрактным и реализовать один подкласс для конкретной части приложения.

5
задан Zach Rattner 20 April 2011 в 02:52
поделиться