23

查看此示例 lambda:

[](int factor)->int{return factor*factor;}

谁能向我解释一下C++11 lambda 表达式前面的方括号有什么用?

4

1 回答 1

23

方括号指定 lambda “捕获”哪些变量,以及如何(按值或引用)。

捕获意味着您可以从 lambda 内部引用 lambda 外部的变量。如果按值捕获,您将在创建 lambda 时获取变量的值——类似于按值将参数传递给函数。如果通过引用捕获,您将引用 lambda 之外的实际变量(并且您需要确保它保持在范围内)。

请注意,在类中,您可以捕获“this”,然后像在类方法中一样调用类方法。

于 2013-03-21T22:52:47.063 回答