我总是被lambda捕获所迷惑,不知道一个变量是按值还是按引用捕获的。例如,如果我有[a],我不知道a是按值还是按引用捕获的。
我认为一个简单的方法是通过例子来理解每种情况(如果有多种表达方式,则需要更多例子):
捕获:
- 无 - 全部按引用 - 全部按值 - r1,r2按引用。其他没有。 - v1,v2按值。其他没有。 - r1,r2按引用。其余按值。 - v1,v2按值。其余按引用。 - r1,r2按引用,v1,v2按值。其他没有。
让我们完全忽略this,因为它是另一个问题。
我认为一个简单的方法是通过例子来理解每种情况(如果有多种表达方式,则需要更多例子):
捕获:
- 无 - 全部按引用 - 全部按值 - r1,r2按引用。其他没有。 - v1,v2按值。其他没有。 - r1,r2按引用。其余按值。 - v1,v2按值。其余按引用。 - r1,r2按引用,v1,v2按值。其他没有。
让我们完全忽略this,因为它是另一个问题。
[a]
是按引用还是按值传递。事实上,我只是浏览页面。但说实话,当我想知道一个简单的答案时,我既没有意愿也没有时间去阅读复杂的描述。我不知道,也许只有我这样。无论如何,我认为 SO 上应该存在这样的帖子。 - bolov