我对我听说过的静态多态概念有一些疑问;您可能主要在 C++ 的上下文中解释它们,但我希望在适用的情况下使用与语言无关的答案(因此标记 C++ 和与语言无关的)。
我们一般如何定义静态多态性?例如,我认为
std::sort
C++ 中的函数应该被认为是静态多态的,因为它依赖于某些对象提供的某些接口,这些对象的行为类似于 iterators,并且提供的迭代器接口下的确切行为可以在编译时确定。这是我们如何定义静态多态性的解释,还是只是对特定情况的描述并且还有更多内容?在 C++ 中使用静态多态的常见代码模式是什么?另外:SP 是否只能通过 C++ 中的模板实现?
给定的 UML 类图是否确实没有直接描述如何处理多态性,因此它至少可以部分地静态或动态地实现?换句话说:静态与动态多态性的选择是否独立于 OOP 模型,因此由实现者决定?
静态多态性只是 C++ 特定的并且与模板的工作方式有关吗?如果没有,它是否存在于除 C++ 之外的任何其他主流语言中?我们可以在 Java、C# 中拥有等价的静态多态性吗?它会带来什么好处吗?
最重要的......使用静态多态的实际好处是什么?我认为我们可以同意它降低了代码的灵活性;除了 - 在 C++ 的情况下 - 节省一个指针取消引用(虚拟函数/指向函数的指针/委托成本)之外,还有什么优势?静态多态性特别有用的问题是哪类问题,是实现的正确选择?