C++ 这段代码中的回调发生在哪里? 类添加 { Add(){cout
和函子可以帮助回调机制,对吗 是的。您可以编写一个函数模板,该模板使用函子执行用户定义的操作,作为其操作的一部分;例如:C++ 这段代码中的回调发生在哪里? 类添加 { Add(){cout,c++,callback,functor,C++,Callback,Functor,和函子可以帮助回调机制,对吗 是的。您可以编写一个函数模板,该模板使用函子执行用户定义的操作,作为其操作的一部分;例如: class Add { Add(){cout<<"ctor";} void operator()(int a ,int b){return a+b;} } int main() { Add(3,4); } 一个特定的用法是std::sort算法,它可以使用用户提供的函子来比较不
class Add
{
Add(){cout<<"ctor";}
void operator()(int a ,int b){return a+b;}
}
int main()
{
Add(3,4);
}
一个特定的用法是std::sort
算法,它可以使用用户提供的函子来比较不支持普通比较运算符的类型
那么这里发生了什么呢
它不是;您的代码不会编译。在修复返回值后(因为它返回的值不是void
),您可以使用
do_stuff(Add(), 3, 4);
但这并不是特别有用。这里没有这种情况。在你上面的do_stuff方法中,你已经将Fn f作为第一个参数传递了。我不能只传递函数的引用吗?这可以被认为是函子的替代品吗?换句话说,为什么要使用函子?v不能只传递需要回调的函数的引用吗??@Nikhil:函子(不是这个,而是一般的)比函数的优势在于它们是对象,所以它们可以将数据绑定到代码以形成闭包。但是要正确描述这一点需要一本书的整整一章。
do_stuff(Add(), 3, 4);
Add()(3,4);