• cpp 内嵌函数(lambda,struct)


    auto testFun = [this](int t)->void{

    }

    []()->反回值{

    }

    []内传入函数运行环境所用变量

    ()内传入变量

    捕捉块

    lambda表达式的方括号部分称为lambda捕捉块(capture block),在这里可以指定如何从所在作用域中捕捉变量。

    捕捉变量的意思是可以在lambda表达式主体中使用这个变量。有两种方式:

    [=]:通过值捕捉所有变量

    [&]:通过引用捕捉所有变量

    指定空白的捕捉块[]表示不从所在作用域中捕捉变量。还可以酌情决定捕捉那些变量以及这些变量的捕捉方法,方法是指定一个捕捉列表,其中带有可选的 默认捕捉选项。前缀为&的变量通过引用捕捉。不带前缀的变量通过值捕捉。默认捕捉应该是捕捉列表中的第一个元素,可以是=或&。

    例如:

    [&x]只通过引用捕捉x,不捕捉其他变量。

    [x]只通过值捕捉x,不捕捉其他变量。

    [=, &x, &y]默认通过值捕捉,变量x和y例外,这两个变量通过引用捕捉。

    [&, x]默认通过引用捕捉,变量x例外,这个变量通过引用捕捉。

    [&x, &y]非法,因为标志符不允许重复。

    通过引用捕捉变量的时候,一定保证党lambda表达式在执行的时候,这个引用还是可用的。

    ----------------------------------------

    cpp内嵌函数

    void Class1::C1Fun1(){
        struct Local
        {
            static void Fun1(){}
            void Fun2(){}
        }
        Local::Fun1();
        Local l;
        l.Fun2();
    }
  • 相关阅读:
    直方图均衡
    k-means聚类方法
    核函数
    支持向量机(SVM)
    函数的定义和调用
    ES5新增方法
    继承
    构造函数和原型
    面向对象版tab 栏切换
    ES6中的对象与类
  • 原文地址:https://www.cnblogs.com/mattins/p/5549520.html
Copyright © 2020-2023  润新知