[英]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.