什么" [this]"用C ++表示

时间:2014-04-08 07:18:56

标签: c++ api c++11 syntax cocos2d-x

当我阅读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);
    }
};

[this]是什么意思?这是C++11中的新语法吗?

1 个答案:

答案 0 :(得分:57)

  

[这]意味着什么?

它引入了一个lambda - 一个可调用的函数对象。将this放在括号中意味着lambda 捕获 this,以便该对象的成员可以在其中使用。 Lambda还可以按值或引用捕获局部变量,如链接页面中所述。

lambda的重载为operator(),因此可以像函数一样调用它:

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

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

  

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