Имеет ли смысл статический полиморфизм для реализации интерфейса?
и с Рождеством всех!
Я узнаю о статическом полиморфизме ичитаю Андрея АлександрескуОтличная книга по политическому дизайну. В моем коде я обнаружил следующее: у меня есть интерфейсInterface
который определяет этот методFoo
должен присутствовать. Этот интерфейс будет реализован классомImpl
, У меня есть следующие два варианта:
1) Динамический полиморфизм
class Interface {
public:
virtual void Foo() = 0;
}
class Impl : public Interface {
public:
void Foo() {};
}
2) Статический полиморфизм
class Impl {
{
public:
void Foo() {};
}
template
class Interface : public I
{
public:
void Foo() { I::Foo(); } //not actually needed
}
Имеет ли смысл в этом случае использовать статический полиморфизм? Второй подход дает какие-либо преимущества по сравнению с первым? Интерфейс определяет только наличие некоторых методов, и его механика одинакова для разных реализаций - поэтому не совсем так, как в случаях, описанных в книге, поэтому я чувствую, что могу только усложнять вещи.
Обновить: Мне не нужно полиморфное поведение во время выполнения; правильная реализация известна во время компиляции.