template <typename Fn>
void do_stuff(Fn f, int a, int b) {
int c = f(a, b);
do_something(c);
}
然后我打电话给:
do_stuff(Add(),1,2);
这里Add()是一个仿函数。
据我所知,这是回调。所以我的问题是为什么要使用仿函数呢? 我不能创建一个函数
int add(int a,int b){return a+b}
并传递此函数的引用而不是函子?
答案 0 :(得分:2)
Functors可以有状态。
你将如何转换
struct adder_ramp
{
int offset;
int operator()( int a, int b ) { ++offset; return a + b + offset; }
};
进入普通功能?