西宁做腋臭北大网站l,网上国网推广宣传语,茶叶网页设计模板图片,网站开发的疑虑1 lamada 的函数指针存在哪里#xff1f;需要通过分析编译后的二进制#xff1b;
2 捕获了什么#xff1f; 为什么捕获#xff1f;捕获的范围是什么#xff1f; 捕获的生命周期是什么#xff1f; lambda 定义匿名函数#xff0c;使得代码更加灵活简洁#xff1b;
lam…1 lamada 的函数指针存在哪里需要通过分析编译后的二进制
2 捕获了什么 为什么捕获捕获的范围是什么 捕获的生命周期是什么 lambda 定义匿名函数使得代码更加灵活简洁
lambda表达式格式:
auto func [capture] (params) opt - ret { func_body; };
funclambda 表达式的名字作为一个函数使用
capture捕获列表
params参数列表
opt函数选项(mutable, noexcept之类)
ret返回值类型如果不写编译器根据返回值自动推导
func_body函数体。 capture 格式
[] //未捕获任何变量。试图在lambda内使用任何外部变量都是错误的
[] //用到的任何外部变量都隐式按引用捕获
[] //用到的任何外部变量都隐式按值捕获
[x, y] //x 按值捕获, y 按引用捕获.
[, x] //x显式地按值捕获. 其它变量按引用捕获
[, z] //z按引用捕获. 其它变量按值捕获
[this]通过引用捕获当前对象其实是复制指针
[*this]通过传值方式捕获当前对象 #include iostream
#include string
#include functionalint main() { int va 1, vb 2, vc 3;//auto lf1 [](){return va;};auto lf2 [](){return vb;};auto lf3 [](){return va;};return 0;
}
编译错误信息 06 g lambda.cpp
lambda.cpp: In lambda function:
lambda.cpp:10:29: error: increment of read-only variable ‘va’10 | auto lf3 [](){return va;};好问题auto lf3 [](){return va;}; 为什么会报错 每天在工作之余坚持研究一个小问题感觉时间还是有点紧只能切分了。
参考文档
c lambda_c lamda-CSDN博客
C Lambda表达式详解_c lamda表达式-CSDN博客