Итак, предположим, что я хочу сделать серию классов, каждая из которых имеет функцию-член с той же самой вещью. Давайте называть функциюИзбегание виртуальных функций
void doYourJob();
Я хочу, чтобы в конечном итоге положить все эти классы в том же контейнере, так что я могу петлю через них и имеют каждый выполнять «doYourJob()»
очевидное решение, чтобы сделать абстрактный класс с функцией
virtual void doYourJob();
, но я не решаюсь это сделать. Это дорогостоящая программа, и виртуальная функция значительно уменьшит ее. Кроме того, эта функция - единственное, что общие классы имеют друг с другом, и doYourJob внедряется совершенно по-разному для каждого класса.
Есть ли способ избежать использования абстрактного класса с помощью виртуальной функции или мне придется его всасывать?
Внедрите его, используя полиморфные классы. Весьма вероятно, что накладные расходы на отправку вызовов на виртуальные функции будут незначительными. В худшем случае это важно, и у вас будет хотя бы чистый дизайн, который можно легко оптимизировать. –