关于动态多态性的问题中提出了CRTP.但是,据称这种模式仅对静态多态性有用.我所看到的设计似乎受到虚拟函数调用的快速阻碍,如此处暗示的那样. 加速甚至2.5倍将是太棒了.
有问题的类很简单,可以完全内联编码,但是直到运行时才会知道将使用哪些类.此外,它们可以以任何顺序链接,将性能损失归咎于伤害.
任何建议(包括如何在这种情况下使用CRTP)欢迎.
编辑:谷歌搜索提到功能模板.这看起来很有希望
多态性字面意思是多个(多边形)形式(变形).在静态类型语言(例如C++)中,存在三种类型的多态性.
Adhoc多态性:这在C++中作为函数和方法重载最好.基于将调用参数的编译时类型与函数或方法签名匹配,相同的函数名称将绑定到不同的方法.
参数多态:在C++中,这是模板和你可以用它做的所有有趣的事情,如CRTP,专业化,部分特化,元编程等.再次这种多态性,相同的模板名称可以根据模板做不同的事情参数是编译时多态.
子类型多态性:最后,当我们在C++中听到多态性这个词时,我们会想到这一点.这是派生类覆盖虚拟函数以专门化行为的地方.指向基类的相同类型的指针可以根据它指向的具体派生类型具有不同的行为.这是在C++中获取运行时多态性的方法.
如果直到运行时才知道将使用哪些类,则必须使用子类型多态,这将涉及虚函数调用.
静态方法调用与静态绑定调用相比具有非常小的性能开销.我恳请你看看这个问题的答案.