一般语法
特殊语法
lambda表达式 [=] 或者 [&]
- 示例1:
https://www.656463.com/wenda/zgfhzCzywzsm2595_399
这个符号“[=]”在C ++中意味着什么?(what this symbol “[=]” means in C++?)
正在学习一些使用boost库的C ++代码。 还有一些这样的代码:
getService().post( [=] {...} )
这意味着lambda表达式通过赋值捕获值。
另一种选择是使用**[&]通过引用捕获**。
参考:C ++ 11中的lambda表达式?
https://blog.youkuaiyun.com/asdfgh0077/article/details/105225723
- 在Qt的信号槽的例子:
我的理解是:[=]表示定义了一个函数,触发信号时,会调用这个函数。
而且,在类中,这个函数相当于成员函数,可以调用成员的变量。
https://gitee.com/bigearrabbit/KevinQt/blob/master/QMLWidget/MyWindow.cpp
connect(m_pBtnResize, &QPushButton::clicked, [ = ] {
if (m_zoomIn) {
m_zoomIn = false;
m_pQuickItem->setProperty("displayWidth", 800 * 0.8);
m_pQuickItem->setProperty("displayHeight", 600 * 0.8);
}
});
定义函数,传递参数的示例:
auto x = [=](int arg1){printf("%i", arg1); };
void(*f)(int) = x;
f(1);
x(1);