У меня есть некоторые вопросы о концепции static polymporhism Я когда-нибудь слышал о; вы можете интерпретировать их прежде всего в контексте C++, но я был бы признателен за языковые агностические ответы, если это применимо (, тем самым помещая как C++, так и язык-агностик).Определение и реализация статического полиморфизма
Как мы определить статический полиморфизм в целом? В качестве примера, я считаю, что функция
std::sort
из C++ считается статически полиморфной, поскольку она зависит от некоторого интерфейса, предоставляемого некоторыми объектами, которые ведут себя как итераторы, а также точное поведение по току по интерфейсу предоставленных итераторов и во время компиляции. Является ли это объяснением, как мы определяем статический полиморфизм, или это просто описание конкретного случая, и есть еще что-то для этого?Каковы общие шаблоны кода использования статического полиморфизма в C++? Также: есть ли только SP , достигнутый с помощью шаблонов в C++?
Верно ли, что данная диаграмма классов UML не непосредственно описывают, как обрабатывается полиморфизм и, таким образом, он может быть, по меньшей мере, частично реализованы статически или динамически? Другими словами: Является ли выбор статического или динамического полиморфизма независимым от модели ООП и, следовательно, до того, чтобы разработчик решил?
Является ли статический полиморфизм только C++-специфичным и связан с тем, как работают шаблоны? Если нет, то присутствует ли он в любых других основных языках кроме C++? Можем ли мы иметь эквивалент статического полиморфизма в Java, C#, что угодно, и принесет ли он какие-либо выгоды?
Важнейшие ... Каковы фактические преимущества использования статического полиморфизма? Я думаю, мы можем согласиться с тем, что это снижает гибкость кода; каковы преимущества, кроме того - в случае C++ - сохранение одного разыменования указателя (стоимость виртуальной функции/указателя на функцию/делегата)? Что представляет собой класс проблем , где статический полиморфизм особенно полезен, правильный выбор для реализации?
Мы можем согласиться с тем, что это снижает гибкость кода? –
Я думаю, он имел в виду «сложность» или, возможно, «избыточность». –
Нет, я имел в виду гибкость; предполагая, что все проекты со статическим полиморфизмом могут быть реализованы с помощью динамического полиморфизма, но не наоборот. Использование статического полиморфизма для конкретного случая предполагает, что в будущем может возникнуть необходимость переписать его динамически при изменении требований. Просто мое мышление – Kos