在一个捕获`this`的lambda中使用`this->`

Eme*_*pon 2 c++ lambda c++11

有几个类似的问题,但我找不到这个特定点的明确答案.

它是否完全等同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)

und*_*e_d 7

Default-capture [this]既捕获实例指针又意味着lambda中的名称搜索也包括类名称空间.因此,如果找到匹配的变量名称,则它引用捕获的实例中的该变量(除非在更近的范围内阴影等).

所以,是的,var在这种情况下使用等同于/简写this->var.与在常规实例函数中使用成员名称完全相同!