#include <iostream>
#include <functional>
// 定义一个简单的闭包示例
std::function<int(int)> makeCounter() {
int count = 0;
// 返回一个lambda表达式,捕获外部变量count
return [count]() mutable -> int {
return count++;
};
}
int main() {
// 创建一个闭包实例
auto counter = makeCounter();
// 使用闭包
std::cout << "Counter: " << counter() << std::endl; // 输出: Counter: 0
std::cout << "Counter: " << counter() << std::endl; // 输出: Counter: 1
std::cout << "Counter: " << counter() << std::endl; // 输出: Counter: 2
return 0;
}
makeCounter
函数:该函数返回一个 lambda 表达式,这个 lambda 表达式捕获了局部变量 count
。count
的初始值为 0。mutable
关键字:在 lambda 表达式中使用 mutable
关键字是为了允许修改捕获的变量 count
。counter()
时,都会返回并递增 count
的值,因此可以实现一个简单的计数器功能。通过这种方式,闭包可以在 C++ 中实现类似 JavaScript 中的闭包效果,即捕获并保存外部变量的状态。
上一篇:c++单引号和双引号的区别
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站