Richy’s HomePage function

函数对象

  • 函数指针:

指向函数的指针。
例子:double (*func)(int a, float b)

  • 函数指针作参数:

    1
    2
    void Fun ( double(* paramFunc)(int a, float b), float param2 )
    {...}
  • 函数指针作为返回值:

    1
    2
    3
    4
    double (*Fun(float a, float b)) (int a, float b)
    {
    return func;
    }
  • 函数对象
    • 重载()运算符
1
2
3
4
5
6
7
8
9
10
11
class Func
{
private:
int a;
public:
Func(int a): a(a)
{}
bool () (int b) {return a + b;}
}
  • lambda表达式
    […] (…) {…}
    1
    auto Func = [&, b] (int param) -> double {return param + a + b;}

以上三者都是可调用类型(callable type),可统一用std::function来表示
c++11提供多种包装器,bind, function, mem_fn, reference_wrapper。