C++ Qt5、lambda和VAR范围

C++ Qt5、lambda和VAR范围,c++,c++11,lambda,qt5,C++,C++11,Lambda,Qt5,我在Qt5中有一个QLocalServer,它连接到newConnection()信号 该信号调用此函数: QLocalSocket *clientConnection = m_server->nextPendingConnection(); clientID++; // <--- declared in header clientConnection->setProperty("ID", QVariant(clientID)); connect(clientConnecti

我在Qt5中有一个QLocalServer,它连接到
newConnection()
信号

该信号调用此函数:

QLocalSocket *clientConnection = m_server->nextPendingConnection();
clientID++; // <--- declared in header
clientConnection->setProperty("ID", QVariant(clientID));

connect(clientConnection, &QLocalSocket::disconnected, [clientConnection](){
    qDebug() << "Client disconnected " << clientConnection->property("ID");
    clientConnection->deleteLater();
});
QLocalSocket*clientConnection=m_server->nextPendingConnection();
clientID++;//setProperty(“ID”,QVariant(clientID));
连接(clientConnection,&QLocalSocket::已断开连接,[clientConnection](){
qDebug()deleteLater();
});

如果两个客户机(客户机ID 1和客户机ID 2)依次连接,然后客户机1断开连接,lambda函数内部会发生什么?我的意思是,在第二个客户端连接之后,
clientConnection
的值会发生什么变化?它会被覆盖(这样第一个客户端的
clientConnection
将不再有效)还是每个实例都有有效的数据?

lambda闭包类型的每个实例都有自己的存储空间,用于存储由值捕获的成员

int i = 1;
auto l1 = [i]() { return i; };    // captures 1
i = 2;
auto l2 = [i]() { return i; };    // captures 2
l1();    // returns 1
l2();    // returns 2

lambda闭包类型的每个实例都有自己的存储空间,用于存储由值捕获的成员

int i = 1;
auto l1 = [i]() { return i; };    // captures 1
i = 2;
auto l2 = [i]() { return i; };    // captures 2
l1();    // returns 1
l2();    // returns 2