cpp中的“[=]”是什么意思

Sud*_*kar 8 c++ lambda c++11

请检查下面的代码:

NodeScheduleLambda(this, 0.01f, [=]
{
    this->removeFromParentAndCleanup(true);
});
Run Code Online (Sandbox Code Playgroud)

那里面的“[=]”是什么意思呢。有谁可以帮帮我吗,谢谢...

Ary*_*yan 8

lambda 是一种未命名/匿名函数,由于其代码片段很短,因此在编程中很有用。

C++ 中的 lambda 函数定义如下

[]() { }
Run Code Online (Sandbox Code Playgroud)

[]是捕获列表、()参数列表和{}函数体。

捕获列表定义了 lambda 外部的内容应在函数体内可用以及如何可用。它可以是:

  • 值:[x]
  • 参考文献 [&x]
  • 当前在引用范围内的任何变量 [&]
  • 与第三种类型相同,但按值 [=]

您使用第四个捕获列表传递 lamda 函数作为第三个参数。

NodeScheduleLambda(this, 0.01f, [=]{ this->removeFromParentAndCleanup(true); });
Run Code Online (Sandbox Code Playgroud)


ril*_*ent 5

它不是特定于 coco2d 的。

这是一个 lambda 捕获列表。使变量可用于 lambda。您可以使用按值复制的 [=],或按引用传递的 [&]。

您还可以使用 [] 来捕获任何内容。

更多详细信息:https://msdn.microsoft.com/library/dd293608.aspx