在C++中,"[=]"的含义是什么?

8
请检查下面的代码:
NodeScheduleLambda(this, 0.01f, [=]
{
    this->removeFromParentAndCleanup(true);
});

在这里,"[=]"的意思是什么?有人可以帮我吗?谢谢...

如果您已经得到了答案,请随意将此问题标记为已解决。最好的问候。 - rilent
2个回答

8

lambda是一种没有名称的/匿名函数,在编程中由于其简短的代码片段而非常有用。

C++中定义lambda函数如下

[]() { }
[]是捕获列表,()是参数列表,{}是函数体。
捕获列表定义了lambda函数中应从外部可用的内容及其方式。它可以是以下任意一种类型:
  • 一个值:[x]
  • 一个引用:[&x]
  • 当前作用域中的任何变量,按引用传递:[&]
  • 与第三种类型相同,但按值传递:[=]
您正在使用第四个捕获列表将lambda函数作为第三个参数传递。
NodeScheduleLambda(this, 0.01f, [=]{ this->removeFromParentAndCleanup(true); });

5

这不是针对coco2d特定的。

这是一个lambda捕获列表。使变量可用于lambda表达式。你可以使用[=]以值方式复制,或者[&]以引用方式传递。

你还可以使用[]不捕获任何内容。

更多详情请参考:https://msdn.microsoft.com/library/dd293608.aspx


谢谢。@rilent - Sudhakar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接