C++项目中怎么实现闭包

2023-04-19 02:37:00 项目

C++中实现闭包主要有两种方式,一种是使用函数指针,另一种是使用lambda表达式。

1、使用函数指针实现闭包:函数指针是一种指向函数的指针,它可以指向一个函数,并且可以在函数中调用该指针指向的函数。函数指针可以实现闭包的功能,因为它可以访问外部函数的变量,这样就可以在函数中使用外部函数的变量,从而实现闭包的功能。

下面是一个使用函数指针实现闭包的示例:

#include 
using namespace std;
 
int add(int a, int b)
{
    return a + b;
}
 
int main()
{
    // 定义函数指针
    int (*func)(int, int);
    func = add;
 
    // 使用函数指针
    int c = func(1, 2);
    cout << c << endl;
 
    return 0;
}

2、使用lambda表达式实现闭包:lambda表达式是C++ 11标准中新增的一种表达式,它可以定义一个匿名函数,并且可以访问外部函数的变量,从而实现闭包的功能。

下面是一个使用lambda表达式实现闭包的示例:

#include 
using namespace std;
 
int main()
{
    int a = 10;
    int b = 20;
 
    // 使用lambda表达式定义一个匿名函数
    auto func = [a, b]()->int { return a + b; };
 
    // 使用lambda表达式
    int c = func();
    cout << c << endl;
 
    return 0;
}

总结:C++中实现闭包主要有两种方式,一种是使用函数指针,另一种是使用lambda表达式。函数指针可以指向一个函数,可以在函数中调用该指针指向的函数,从而实现闭包的功能;lambda表达式可以定义一个匿名函数,并且可以访问外部函数的变量,从而实现闭包的功能。

相关文章