我正在编写一个类,其中一个函数的实现取决于用户。目前我把它作为一个虚函数,用户需要重写我的类来提供它的实现。我正在考虑将其设为 functor(boost::function)/function_pointer 以便用户可以注册到它。应用程序对性能至关重要,速度比看起来漂亮的类更重要。更改为仿函数是否会带来一些性能优势?
在大多数情况下,它将是一个自由函数,因此函数指针应该没问题。但我想在某些情况下可能需要状态,因此它需要是一个仿函数。
通过允许注册 function_ptr 或 functor 并根据某些 bool 调用适当的函数,我会获得任何性能优势吗?类似的东西。
class Myclass
{
public:
registerFuncPtr(FuncPtrSignature);
registerFunctor(boost::function func);
private:
someMethod(someArgs)
{
...
if(_isFuncPtr)
_func_ptr(args);
else
_functor(args);
...
}
bool _isFuncPtr;
FuncptrSignature _func_ptr;
boost::function _functor;
}
更新:
我正在编写一个共享库,客户端将动态链接它。没有 C++0x。:(