c++11lambda表达式

本文详细介绍了lambda表达式的概念、基础用法、参数传递、局部变量捕捉、返回值处理以及mutable修饰符的应用,最后以实际案例展示其在按钮槽函数中的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

lambda的作用

用于定义并创建匿名的函数对象,以此来简化开发
语法

[capture](parameters)mutable->return-type{statement}

其中
1.[capture]:捕获列表(到定义位置的所有局部变量)[]不能省略
2.(paramenters)参数列表,与普通参数的参数列表是一致的。
3.mutable 可修改提示符 即使参数为空,参数列表()也不能省略
4.->return-type 返回值类型,不需要可以省略
5{statement}函数体,希望函数做什么事,可以是用参数列表,也可以使用捕获列表

多说无益,直接进行实战

lambda表达式实战

下面是一个最基础的lambda表达式

[](){
};

上面的一大堆,就表示一个函数

1.lambda基础用法

  auto fun1=[](){
      std::cout<<"最基础的lambda表达式"<<std::endl;
    };
    fun1();

2.传递局部变量

	std::string a="局部变量被捕捉";
    auto fun2=[a]()
    {
     std::cout<<"带有局部变量的lambda表达式"<<a<<std::endl;
    };
    fun2();

3.接受返回值

std::string a="局部变量被捕捉";
 auto fun3=[a](std::string c ,std::string b){
        std::string res=a+c+b;
        return res;
    };
    std::cout<<fun3("作为参数的传递","接受返回值")<<std::endl;

4.修改传递过来的拷贝的形参

    int st=100;
    auto fun4=[st](int i) mutable{
        st=i;
      return st;
    };
    std::cout<<"通过添加mutable表示符修改了形参值为:"<<fun4(299)<<std::endl;
   

5.修改传递过来的实参

	int st=100;
    auto fun5=[&st](int i) mutable{
        st=i;
      return "";
    };
    std::cout<<"通过添加mutable表示符修改了实参值为:"<<st<<fun5(368)<<std::endl;

6.最终案例,作为按钮的槽函数

connect(button2,&QPushButton::clicked,this,[=](){this->close();std::cout<<"我接受到了所有的参数,其中,st:"<<st<<std::endl;});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值