gpt4 book ai didi

c++ - 在C++中的本地范围内使用Lambda

转载 作者:行者123 更新时间:2023-12-02 09:59:59 25 4
gpt4 key购买 nike

可以像这样在本地范围内声明lambdas:

// reference to method is just a call back function. 
void(*referenceToSomeMethod)();

// store call back function
void foo(void(*pointerToMethod)())
{
referenceToSomeMethod = pointerToMethod; // save reference to method
}

int main()
{

referenceToSomeMethod = nullptr;

if (1 == 1)
{
// use of lambda on local scope
foo([]() {
printf("Executing callback function\n");
});


} // leaving scope lambda may not longer be valid?

// simulate some work
Sleep(10000);

if (referenceToSomeMethod != nullptr)
referenceToSomeMethod(); // execute lambda
}
在现实生活中,我等到事件发生后才触发回调方法。我可以冒着使回调指针指向不再存在的函数的风险吗?
我知道这可以在C#和其他具有垃圾收集器的语言中使用。但这可以在c++上工作吗?

最佳答案

带方括号的Lambda与功能指针等效,并且将以相同的方式按值复制。回答是。

关于c++ - 在C++中的本地范围内使用Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63120346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com