-2
    class Add
    {
      Add(){cout<<"ctor";}
      void operator()(int a ,int b){return a+b;}

    }
    int main()
    {
      Add(3,4);
    }

添加是函子。函子可以帮助回调机制吗?那么它发生在哪里?

4

1 回答 1

2

函子可以帮助回调机制吗?

是的。您可以编写一个函数模板,它使用函子来执行用户定义的操作,作为它正在做的任何事情的一部分;例如:

template <typename Fn>
void do_stuff(Fn f, int a, int b) {
    int c = f(a, b);
    do_something(c);
}

然后注入你的操作:

do_stuff(Add(), 3, 4);

一种特定用途是std::sort算法,它可以使用用户提供的仿函数来比较不支持正常比较运算符的类型。

那么它发生在哪里?

不是;您的代码无法编译。修复返回值后(因为它返回值 not void),您可以创建并调用一个函数

Add()(3,4);

但这并不是特别有用。

于 2013-05-22T18:03:15.250 回答