c++ lamda

作者: xinguoshui | 来源:发表于2020-05-24 16:32 被阅读0次

    [captures] (params) mutable-> type{...} //lambda 表达式的完整形式

    在 lambda 表达式引出操作符[ ]里的“captures”称为“捕获列表”,可以捕获表达式外部作用域的变量,在函数体内部直接使用,这是与普通函数或函数对象最大的不同(C++里的包闭必须显示指定捕获,而lua语言里的则是默认直接捕获所有外部变量。)

    捕获列表里可以有多个捕获选项,以逗号分隔,使用了略微“新奇”的语法,规则如下

    [ ]        :无捕获,函数体内不能访问任何外部变量

    [ =]      :以值(拷贝)的方式捕获所有外部变量,函数体内可以访问,但是不能修改。

    [ &]      :以引用的方式捕获所有外部变量,函数体内可以访问并修改(需要当心无效的引用);

    [ var]  :以值(拷贝)的方式捕获某个外部变量,函数体可以访问但不能修改。

    [ &var] :以引用的方式获取某个外部变量,函数体可以访问并修改

    [ this]  :捕获this指针,可以访问类的成员变量和函数,

    [ =,&var] :引用捕获变量var,其他外部变量使用值捕获。

    [ &,var]:只捕获变量var,其他外部变量使用引用捕获。

    相关文章

      网友评论

          本文标题:c++ lamda

          本文链接:https://www.haomeiwen.com/subject/rjjjahtx.html