簡體   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