gpt4 book ai didi

c++ - 成员函数何时超出范围?

转载 作者:行者123 更新时间:2023-11-30 02:22:53 25 4
gpt4 key购买 nike

假设我有以下内容:

struct Foo
{
Foo() : bar([&]{ doSomething();})
std::function<void(void)> bar;
void doSomething(){};
}

假设一个线程不断调用 Foo 实例的 bar 成员,而另一个线程破坏 Foo 实例。由于首先调用了 Foo 的析构函数,因此对 bar 的调用是否可能导致无效的函数调用? Foo 的析构函数是否在释放之前使成员函数调用无效?

编辑:抱歉,我应该说得更具体一些,在调用 bar 的析构函数之前调用 doSomething 会变得未定义吗?

最佳答案

Is it possible that a call to bar will result in an invalid function call since the destructor of Foo is called first?

是的,除非您确保不会发生这种情况。

Does the destructor of Foo invalidate member function calls before deallocation?

是的。一旦调用析构函数,对该对象及其子对象的所有引用都会失效。

请注意,成员函数 与您拥有的不同。您拥有的是一个函数包装器,它是一个成员对象。不过,这种区别对答案没有影响。

关于c++ - 成员函数何时超出范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46805639/

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