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를 사용하는 것이 안전합니까?
상태가 양호하다는 것은 무엇을 의미합니까? 'AutoSomething'의 dtor가 호출되고'Object :: some_callback()'이 호출된다는 것이 사실입니다. – songyuanyao
소멸자에서 프로그램을 throw하는 함수를 호출하면 프로그램이 종료됩니다. 일반적으로 콜백 함수가하는 일을 제어하지 않기 때문에 소멸자에서 calbacks를 호출하지 않아도됩니다. – Galik
예 그들은 호출 될 것입니다,하지만 나는 그 시점에 Object가 손상 될 수 있다고 의심했습니다. – user1289