繁体   English   中英

“[this]”在C ++中意味着什么

[英]What does “[ this ]” mean in 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);
    }
};

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

这是什么意思?

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

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

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

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

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

是。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM