C/C++教程

C++中的lambda表达式

本文主要是介绍C++中的lambda表达式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

lambda 表达式表示一个可调用的代码单元,可理解为一个未命名的内联函数,其形式如下:

[capture list](parameter list) -> return-type{function body}

capture list :捕获列表,能够捕捉上下文中的变量供 Lambda 函数使用(通常为空);
parameter list : 参数列表,与普通函数的参数列表一致;
return type : 返回类型
function body : 函数体,内容与普通函数一样。不过除了可以使用参数之外,还可以使用所有捕获的变量。

其中,[capture list] 捕获列表的定义方式
[] 不导入任何变量。
[&] 捕获外部作用域中所有变量,并作为引用在函数体中使用(按引用捕获)。
[=] 捕获外部作用域中所有变量,并作为副本在函数体中使用(按值捕获)。
[=,&foo] 混合使用,按值捕获外部所有变量,并按引用捕获 foo 变量。
[bar] 按值捕获 bar 变量,同时不捕获其他变量。
[this] 捕获当前类中的 this 指针,可以在 lamda 中使用当前类的成员函数和成员变量。

在这里插入图片描述
1、this捕获,可以使用当前对象的成员函数sayHello()

[this](){
		this->sayHello(); 
      };

2、值捕获,这里使用了外部的info变量

[=]() {
	SDKConfInfo(info.toStdString().c_str());
}

3、不捕获,但传递形参a

auto func = [](int a) {std::cout<<a<<std::endl;};
func(9);//输出9
这篇关于C++中的lambda表达式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!