QPushButton *but1 = new QPushButton(this);
but1->setText("lamda表达式");
// 将but1直接写在括号中时,为以值传递的方式将but1这个指针传递进匿名函数里
// = ,表示将表达式外所有变量以值传递的方式传进匿名函数里,传进来为常量
// & ,表示将表达式外所有变量以引用传递的方式进入匿名函数里,传进动态指针会引发出错,内存释放的问题。
//mutable关键字,将传进去的值,改为普通变量,不再是常量了
connect(but1,&QPushButton::clicked,[=]()mutable{
qDebug() << "输出";
});
//[ =] ,表示将表达式外所有变量以值传递的方式传进匿名函数里,传进来为常量
// [&] ,表示将表达式外所有变量以引用传递的方式进入匿名函数里,传进动态指针会引发出错,内存释放的问题。
//[ ]mutable关键字,将传进去的值,改为普通变量,不再是常量了
[ ]不捕获任何变量;
[&]以引用方式捕获所有变量;
[=]用值的方式捕获所有变量(可能被编译器优化为const &);
[=,&f]以引用捕获f,但其余变量都靠值捕获;
[&,f]以值捕获f,但其余变量都靠引用捕获;
[bar]以值的方式捕获bar;不捕获其它变量;
[this]捕获所在类的this指针。