这段代码中的回调发生在哪里?

Where is thee callback happening in this code?

本文关键字:回调 在哪里 段代码 代码      更新时间:2023-10-16
    class Add
    {
      Add(){cout<<"ctor";}
      void operator()(int a ,int b){return a+b;}
    }
    int main()
    {
      Add(3,4);
    }

Add是函子。函子可以在回调机制中发挥作用?那么这是在哪里发生的呢?

函子可以帮助实现回调机制,对吧?

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

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算法,它可以使用用户提供的函子来比较不支持普通比较操作符的类型。

那么它发生在哪里??

它不是;你的代码无法编译。在确定返回值之后(因为它返回的值不是void),您可以使用

创建并调用一个函数。
Add()(3,4);

但是这不是特别有用。