考虑到指向函数的指针返回另一个指向另一个函数的指针的事实是C中用于引入一些运行时多态性/回调的机制,在C ++中实现它的同等方法是什么,同时改善局部性并降低成本指针和间接?
例如this syntactic sugar可以提供帮助,但我对此并不感兴趣,尽管它是以C ++方式做事而不是更多C-ish的好方法{{1}我在尝试减少运行时显式指针的使用时,对提高局部性更感兴趣。
答案 0 :(得分:3)
为什么人们在C中使用函数指针来模拟多态性的真正原因不是性能,而是C既不支持真正的多态也不支持模板。这些是C ++中的两个替代方案。所有三种方法都在this thread进行了比较。
请注意,即使调用函数指针不需要虚函数调用执行的额外vtable查找,调用虚函数和函数指针也会遇到相同的主要性能问题:两种情况下的分支预测都不可靠而且您最终会有更多的管道冲洗。
答案 1 :(得分:0)
我认为您可以使用虚拟功能来满足部分要求。