有几个类似的问题,但我找不到这个特定点的明确答案.
它是否完全等同this->于在lambda中调用方法或成员变量时使用或不使用捕获this,或者存在一些细微差别?
class C {
int var;
void foo();
void fool() {
auto myLambda = [this] () {
//
this->var = 1;
this->foo();
// 100% equivalent to?
var = 1;
foo();
}
}
}
Run Code Online (Sandbox Code Playgroud)
Default-capture [this]既捕获实例指针又意味着lambda中的名称搜索也包括类名称空间.因此,如果找到匹配的变量名称,则它引用捕获的实例中的该变量(除非在更近的范围内阴影等).
所以,是的,var在这种情况下使用等同于/简写this->var.与在常规实例函数中使用成员名称完全相同!
| 归档时间: |
|
| 查看次数: |
554 次 |
| 最近记录: |