c++11终于新增了lambda表达式这个东西,简单介绍下,其语法如下:
-
[captures](params)->return_type {// function body};
自己在看的时候,就是关于捕获这块有点蒙圈,单独拿出来记录下:
捕获分为两种:1. 值捕获;2. 引用捕获。跟函数参数传递过程中的值传递和引用传递非常相像,示例代码如下:
-
int main(int argc, char** argv) {
-
int i=1234,j=5678,k=9;
-
auto f=[=,&j,&k]{return i+j+k;};
-
i=1;j=2;k=3;
-
std::cout<<f()<<std::endl;
-
return 0;
-
}
输出结果是:1239,说明值传递是在值声明的那一刻搞定的,而引用传递每次传递的都是最新的值
阅读(1863) | 评论(0) | 转发(0) |