gpt4 book ai didi

c++ - 在堆栈展开时使用 RAII 是否安全?

转载 作者:太空狗 更新时间:2023-10-29 20:22:23 24 4
gpt4 key购买 nike

class AutoSomething
{
public:
AutoSomething(Object& ob)
: object_(object)
{}

~AutoSomething()
{
object_.some_callback();
}

private:
Object& object_;
};

.........

void Object::some_function()
{
AutoSomething some(*this);

some_function_which_may_throw_exception();
}

问题是 - 当调用 AutoSomething 的析构函数时,Object 的状态是否正常?

最佳答案

堆栈展开是 RAII 最初发明的情况。因此,它无疑是最合适的工具。

在您的特定情况下,没有理由说明代码的行为不正确。唯一的问题可能是 some_callback 依赖于 Object 的内部不变量,而当 some_function_which_may_throw_exception 实际抛出时它不会被维护,但这将是一个问题特定代码,与 C++ 本身无关。

关于c++ - 在堆栈展开时使用 RAII 是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38137754/

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