我通读了boost::function函数包装器,以及本教程部分中引用的示例(http://www.boost.org/doc/libs/1_55_0/doc/html/function/tutorial.html)。我试图了解函数包装的用例,而不是仅使用函数指针。我不一定要寻找代码示例,但更多情况下函数包装比函数指针更适合使用。

谢谢,
艾哈迈德。

最佳答案

函数包装器包装任何可调用的实体,其中包括函数指针以及函数对象和lambda函数。

函数对象可以是任何重载operator()的类。
函数对象也是诸如boost::bindstd::bind之类的调用的结果。

函数包装器的使用将允许使用任何类型的可调用对象,而不仅仅是函数指针。

函数对象通常用于将值绑定(bind)到该对象,例如维护内部计数器以确定该函数对象被调用的次数(这与仅需要函数指针范围内的静态变量的函数指针有关),或绑定(bind)类成员函数的实例,以便以后调用。

通过让类构造函数或函数将boost::function(或std::function)函数包装器作为参数而不是函数指针作为参数,您可以让您的类或函数的用户决定是否愿意向您传递函数指针或函数指针。函数对象或lambda,而您不必在乎它们所做的选择。

10-08 08:21
查看更多