我遇到了以下代码,其中Foo是任何用户定义的类:
boost::function<return_type (parameter)> f = boost::ref(instanceOfFoo);
我有以下Qs: 1.如果将类的实例分配给boost函数指针会发生什么?我以为我们只能为它分配功能。 2.为什么发送升压参考而不仅仅是值?
答案 0 :(得分:1)
boost::function
(和C ++ 11的std::function
)包裹callable objects,它们是可以像函数一样调用的任何对象。这包括普通函数和仿函数。 A functor is a class or struct that that defines operator()
boost::function
documentation解释了为什么您可能希望包含对仿函数的引用而不是函数本身:
在某些情况下,它很昂贵(或语义上不正确) Boost.Function克隆一个函数对象。在这种情况下,这是可能的 请求Boost.Function只保留对实际的引用 功能对象。这是使用ref和cref函数来完成的 对函数对象的引用: