按值传递到 lambda 函数的捕获区域(在方括号中)的变量的生命周期。
想不出好例子。虚构代码:
QVector<SomeClass*> objs = initObjs();
for (int i = 0; i < objs.size(); ++i) {
// SomeClass::signal(QString)
connect(objs[i], &SomeClass::signal, this, [this, i] (QString msg) { qDebug() << i << msg; });
}
在这部分代码中,我想显示来自对象数组的消息,并带有对象索引。这应该工作吗?我希望看到的示例输出:
0 我是索引为 0 的 obj
来自 obj[6] 的 6 信号
2somemsg
通过值传递给 lambda 表达式的捕获列表的对象被复制到生成的闭包对象中,并且与闭包对象具有相同的生命周期。