【问题标题】:Why use functors? Cant i just pass function reference instead?为什么要使用函子?我不能只传递函数引用吗?
【发布时间】:2013-05-22 19:26:52
【问题描述】:
    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} 

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

【问题讨论】:

    标签: function callback functor


    【解决方案1】:

    函子可以有状态。

    你会如何转换这个

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

    转换成普通函数?

    【讨论】:

    • 好的..所以它只是为了维护一个状态(除了回调),仿函数是usd。所以如果我不想要一个状态,我可以通过传递一个函数引用来实现回调对吧??
    猜你喜欢
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多