Cpp Note3: 函数指针,函数对象,Lambda

update May 3,2018 2:38

Function Pointer

这篇文章arrow-up-right 解释了关于 Function Pointer 的问题,简要描述如下:

  1. 一个 function 的函数名可以被认为是它的指针;

  2. 函数指针的声明方式如下:

     int func(int a, int b) {
         return a + b;
     }
    
     int main() {
         // 定义function pointer
         int (*f)(int,int) = func;
    
         // 使用 function pointer
         int res = f(1, 2); // res == 3
    
         return 0;
     }

Function Object

如在note2中所说,function object 通过重载 operator() 实现类似于一个函数的功能,所以可以被做为function传递。

这篇文章arrow-up-right 详细讲了有关内容。另外需要注意,function object 有一个好处,可以通过 struct 中的 field 实现类似闭包的作用。

example:

Lambda Expression

这篇文章arrow-up-right 讲的很好。

  1. 基本形式: []() {}

  2. example: