我们在进行信号槽连接时,假设我们的函数体具体实现很短,通常会使用到C++的Lambda匿名函数。这个匿名函数长什么样子呢?如下:
[参数捕获列表](形参列表)mutable->返回值类型
{
函数体具体实现
};
Lambda匿名函数的实现方式非常简略,其通常包含如下需要注意的知识点:
参数捕获列表:通常捕获外部的一些变量,并将这个变量应用于函数体具体实现。参数捕获列表的写法大概有三种,即值捕获、引用捕获以及隐式捕获(“=”或“&”)。
首先是值捕获:捕获外部变量应用于函数体具体实现时,不能被修改,除非加上mutable,例如:
int value = 10;
auto a = [value]()->int {
return value+1;
};
std::cout << a() << std::endl;
上面这个栗子中,仅捕获外部的val