C/C++98/C++11

C++匿名函数(lambda)

2018-11-13  本文已影响28人  音视频直播技术专家

普通的匿名函数

[](int x){return x + 1;};

显示指定返回值类型

[](int x)->int{int y = x + 1; return y;};

对于lambda,只要有返回值,且函数体包含一句语句以上时,其返回值的类型就无法由编译器自动推导,必须明确指定。

lambda的捕获表达式

通过引用捕获,值捕获等捕获方式,lambda的函数体内可以捕获并使用lambda的外围中定义的局部变量以及类成员变量。

引用捕获

int n = 1;
[&](){
    n++; // n==2
}();
// n==2

值捕获

int n = 1;
[=]()mutable{
    n++; // n==2
}();
上一篇下一篇

猜你喜欢

热点阅读