函数指针返回C++中另一个具有局部性的函数指针

function pointer returning another function pointer in C++ with locality

本文关键字:函数 指针 局部性 返回 C++ 另一个      更新时间:2023-10-16

考虑到一个指向函数的指针返回另一个指向另一个函数的指针是C中用于引入一些运行时多态性/回调的机制,在C++中实现这一点的等效方法是什么,同时提高局部性并降低指针和间接寻址的成本?

例如,这种语法糖可能会有所帮助,但我对此并不感兴趣,尽管用C++而不是更C化的typedef来做事情是一种很好的方式,但我更感兴趣的是在运行时提高局部性,同时减少显式指针的使用。

人们在C中使用函数指针来模拟多态性的真正原因不是性能,而是C既不支持真正的多态性也不支持模板。这是C++中的两个备选方案。这三种方法在本线程中进行了比较。

请注意,尽管调用函数指针不需要像虚拟函数调用那样进行额外的vtable查找,但调用虚拟函数和函数指针都会遇到相同的主要性能问题:在这两种情况下,分支预测都不那么可靠,最终往往会出现更多的管道刷新。

我认为您可以使用Virtual函数来满足部分需求。