为什么要使用仿函数?我只是通过功能参考而不是?

时间:2013-05-22 19:26:52

标签: function callback functor

    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} 

并传递此函数的引用而不是函子?

1 个答案:

答案 0 :(得分:2)

Functors可以有状态。

你将如何转换

struct adder_ramp
{
    int offset;
    int operator()( int a, int b ) { ++offset; return a + b + offset; }
};

进入普通功能?