C++匿名函数的生命周期



 void (*p)(void) = nullptr;

void t1()
{
    auto func = []()
    {
        cout<<"func1"<<endl;
    };
    p = func;
}

int main()
{
    t1();
    p();
    return 0;
}

比如上面一段代码,匿名函数func是的内容是存在代码区的么?只要知道了它的地址,是不是全局可用,直至程序退出?

c++11 C++

自动·圆珠笔 10 years, 3 months ago

是的,没有捕获任何对象的匿名函数就是个普通的函数,名字由编译器生成,它的指针跟普通函数的函数指针没什么区别,可以放心全局使用。

比良版龙二 answered 10 years, 3 months ago

Your Answer