C++ 静态多态性的定义和实现
我有一些关于静态多元论的问题,我有时听说过;你可以在C++的上下文中对它们进行解释,但是我会欣赏语言不可知的答案,因为它们是适用的(因此C++和语言无关)。 <> L> > P>强>一般如何定义静态多态性?作为一个例子,我相信C++中的<代码> STD::排序函数应该被认为是静态多态的,这取决于一些对象的接口,这些对象的行为类似于迭代器,并且,在所提供的迭代器接口下的确切行为可以在编译时确定。这是我们如何定义静态多态性的解释,还是仅仅是对特定情况的描述,还有更多 在C++中使用静态多态性的常见代码模式< /强>是什么?另外,SP是通过C++中的模板实现的吗?p>C++ 静态多态性的定义和实现,c++,design-patterns,language-agnostic,static-polymorphism,C++,Design Patterns,Language Agnostic,Static Polymorphism,我有一些关于静态多元论的问题,我有时听说过;你可以在C++的上下文中对它们进行解释,但是我会欣赏语言不可知的答案,因为它们是适用的(因此C++和语言无关)。 L> > P>强>一般如何定义静态多态性?作为一个例子,我相信C++中的 STD::排序函数应该被认为是静态多态的,这取决于一些对象的接口,这些对象的行为类似于迭代器,并且,在所提供的迭代器接口下的确切行为可以在编译时确定。这是我们如何定义静态多态性的解释,还是仅仅是对特定情况的描述,还有更多 在C++中使用静态多态性的常见代码模式< /
boost::bind
工作的SFINAE魔法肯定不是多态的——它只是为了消除语言本身的不一致性
我们可以同意,它降低了代码的灵活性??我想他指的是“复杂性”或者可能是“冗余”。不,我指的是灵活性;假设所有具有静态多态性的设计都可以通过动态多态性来实现,但不是以相反的方式实现——在特定情况下使用静态多态性意味着,如果需求发生变化,将来可能需要动态重写它。这只是我的想法,但它的工作方式也是相反的:您可能还需要采取另一种方式(例如,保存类型信息)。我认为大多数人会认为<代码> STD::向量比java一般向量的通用和无用的<代码>对象< /Case>基类更灵活。“2。是的。”函数重载是什么?”查尔斯:我从来没有听到过任何人在调用“静态多态”之前(虽然我认为它适合)。这取决于你如何回答(1),当然。@Charles:嗯,在1中我明确地说“类型多态性”只是出于这个原因(而不是一般情况)。