C ++中的“”是什么意思?

当我阅读Cocos2dx 3.0 API时,发现如下所示:

 auto listener = [this](Event* event){ auto keyboardEvent = static_cast<EventKeyboard*>(event); if (keyboardEvent->_isPressed) { if (onKeyPressed != nullptr) onKeyPressed(keyboardEvent->_keyCode, event); } else { if (onKeyReleased != nullptr) onKeyReleased(keyboardEvent->_keyCode, event); } }; 

这是什么意思? 这是C++11新语法吗?

这是什么意思?

它引入了一个lambda – 一个可调用的函数对象。 把this放在括号里意味着lambda 捕获 this ,所以这个对象的成员在它里面是可用的。 Lambdas还可以通过值或引用捕获本地variables,如链接页面中所述。

lambda具有operator()的重载,所以它可以像函数一样被调用:

 Event * event = some_event(); listener(event); 

它将运行lambda主体中定义的代码。

这是C ++ 11中的新语法吗?

是。