0
    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} 

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

4

1 回答 1

2

函子可以有状态。

你会如何转换这个

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

变成普通功能?

于 2013-05-22T19:29:27.473 回答