c++++ 函数 lambda 表达式的写法规范语法为:[capture](parameters) -> return_type { // 函数体},其中 capture 为捕获外部变量,parameters 为函数参数,return_type 为函数返回值类型。其类型根据捕获列表和参数列表分为:捕获所有外部变量,无参数:auto 类型;捕获特定外部变量,无参数:auto 类型(可缩小);无捕获,有参数:function 类型。lambda 表达式用于创建临时函数对象,可以将其赋值给变量或函数指针,或直接作为参数传递。
C++ 函数 Lambda 表达式的写法规范
语法:
[capture](parameters) -> return_type { // 函数体 }
登录后复制
其中:
capture
:捕获外部变量,可选,默认为[&]
(捕获所有外部变量)parameters
:函数参数,可选return_type
:函数返回值类型,可选
Lambda 表达式类型:
Lambda 表达式属于匿名函数类型。其类型取决于捕获列表和参数列表:
- 捕获所有外部变量,无参数:
auto
类型 - 捕获特定外部变量,无参数:
auto
类型(可缩小) - 无捕获,有参数:
function<return_type(parameters)>
类型
使用规范:
- Lambda 表达式用于创建临时函数对象。
- 可将其赋值给变量或函数指针,或直接作为参数传递。
- Lambda 表达式中可访问捕获的外部变量,但不能修改它们(除非通过引用捕获)。
- Lambda 表达式中的
this
指针指向创建它们的上下文。
实战案例:
// 捕获所有外部变量,无参数 auto lambda1 = []() { // 可以访问外部变量 std::cout << "Lambda 1: " << x << std::endl; }; // 捕获特定外部变量,无参数 int x = 10; auto lambda2 = [x]() { // 只可以访问捕获的外部变量 x std::cout << "Lambda 2: " << x << std::endl; }; // 无捕获,有参数 auto lambda3 = [](int y) { // 没有捕获外部变量,y 为函数参数 std::cout << "Lambda 3: " << y << std::endl; }; int main() { lambda1(); lambda2(); lambda3(20); return 0; }
登录后复制
输出:
Lambda 1: 10 Lambda 2: 10 Lambda 3: 20
登录后复制
以上就是C++ 函数lambda表达式的写法规范是什么?的详细内容,更多请关注叮当号网其它相关文章!
文章来自互联网,只做分享使用。发布者:weapp,转转请注明出处:https://www.dingdanghao.com/article/334880.html