我一直在听C++中的仿函数.有人可以给我一个关于它们是什么的概述以及在什么情况下它们会有用吗?
我一直很困惑什么是 C++ 中的闭包。我读过这篇什么是“关闭”?但几乎所有答案都指的是 JavaScript,但我认为 C++ 和 JavaScript 之间的闭包存在一些差异。所以我发现很难将闭包的 JavaScript 描述与 C++ 相匹配。
例如,几乎所有答案都以函数返回函数为例来演示 JavaScript 中的闭包。但是我在 C++ 中没有找到类似的模式。
更重要的是,在 JavaScript 中没有所谓的“捕获列表”这样的东西。
示例 1:
int a = 3;
int am_I_a_closure(int c){
return c + a;
}
int main(){
}
Run Code Online (Sandbox Code Playgroud)
我的意思是,通过正常的名称查找过程,如果在当前作用域中找不到名称,则在外部作用域中找到它,然后在更多外部作用域中找到它...
为什么需要捕获列表?为什么需要捕获外部作用域变量?不能通过正常的名称查找来完成吗?
示例 2:
int main(){
int a = 3;
{
int b = 5;
{
int c = 4;
{
std::cout << a+b+c <<std::endl;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
示例 3: …