c ++函数包装器(boost)

时间:2014-03-18 18:50:51

标签: c++ boost

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

谢谢你, 艾哈迈德。

1 个答案:

答案 0 :(得分:2)

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

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

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

函数对象主要用于将值绑定到对象,例如维护内部计数器以确定调用函数对象的次数(在函数指针范围内仅使用需要静态变量的函数指针很棘手),或者将类实例绑定到成员函数以便以后调用。

通过让类构造函数或函数将boost::function(或std::function)函数包装器作为参数而不是函数指针,您允许类或函数的用户决定是否他们宁愿给你一个函数指针或一个函数对象或一个lambda,你也不必关心他们做出的选择。