Я должен принять решение относительно обобщения и полиморфизма.
Ну, сценарий стандартный: я хочу сделать свой монолитный взаимозависимый код должен быть более модульным, чистым и расширяемым. Он все еще находится в стадии, когда изменение принципа дизайна выполнимо, и, смотря на это, очень желательно.
Я буду вводить чисто виртуальные базовые классы (интерфейсы) или шаблоны?
Мне известно об основах выбора шаблона: меньше косвенности, лучшей производительности, более компиляции но без позднего связывания и т.д.
stl не использует много (или нет?) наследования, а boost тоже не работает. Но я думаю, что они нацелены на то, чтобы быть очень маленькими базовыми инструментами, которые используются каждый 2 строки кода программистом.
Я считаю, что подход наследования и позднего связывания более разумен для подключаемый стиль больших фрагментов кода и функциональность, которые должны быть взаимозаменяемыми, обновляемый и т.д. после развертывания или даже во время выполнения.
Ну, мой сценарий в некоторой степени заключен между собой.
Мне не нужно обмениваться кусочками кода "на лету" во время выполнения, время компиляции в порядке. Обычно это также очень центральная и часто используемая функциональность, он не логически разделяется на большие блоки.
Это позволяет мне несколько придать шаблонному решению. Для меня это также выглядит несколько чище.
Есть ли какие-то большие плохие последствия, все еще интерфейсы идти? Когда они не? Что больше соответствует стандарту С++?
Я знаю, что это граничит с субъективным, но меня действительно интересует некоторый опыт. У меня нет копии Скотта Мейера, эффективного С++ поэтому я возлагаю надежды на вас, ребята:)