我正在阅读一篇文章,其中说明了以下内容
如果有的话,可以隐式捕获当前对象(* this) 捕获默认值存在。如果隐式捕获,它始终是 通过引用捕获,即使捕获默认值为=。
我很难理解上述陈述 - 什么是捕获默认值?这是否意味着如果我使用=
作为捕获(这意味着在当前范围内复制变量),它会隐式地将this
添加到捕获中,从而允许我使用this
?
答案 0 :(得分:2)
什么是捕获默认值?
=
或&
。
以逗号分隔的捕获列表([]
中包含的内容)可以选择以捕获默认值之一开头:=
或&
(可能是列表中唯一的元素) )。如果存在capture-default并且您尝试在lambda中使用必须捕获的变量(自动变量或this
),则capture-default将按值捕获该变量(=
)或通过引用(&
)。
这是否意味着如果我使用
=
作为捕获它会隐式地将this
添加到捕获
是的,但只有在您实际使用它时(直接或通过访问类成员)。
捕获默认值不捕获任何变量,除非您实际在lambda中使用它们。