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