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?Безопасно ли использовать RAII при размотке штабеля?
Что значит состояние в порядке? Это правда, что будет вызван dtor 'AutoSomething', а затем вызывается' Object :: some_callback() '. – songyuanyao
Если вы вызываете функцию в своем деструкторе, которая бросает вашу программу, она прекратится. Как правило, вы не контролируете, какие функции обратного вызова делают так, я бы избегал вызова calback в деструкторе. – Galik
Да, они будут вызваны, но я сомневался, что объект может быть поврежден в то время. – user1289