C ++: обрабатывать ресурсы, если конструкторы могут генерировать исключения (ссылка на FAQ 17.4]
Спасибо за все ответы.
Я переформатировал свой вопрос, чтобы понять состояние указателя на член после того, как конструктор связывающегося класса выдает исключение
Опять мой пример класса :)
class Foo
{
public:
Foo()
{
int error = 0;
p = new Fred;
throw error; // Force throw , trying to understand what will happen to p
}
~Foo()
{
if (p)
{
delete p;
p = 0;
}
}
private:
Fred* p;
};
int main()
{
try
{
Foo* lptr = new Foo;
}
catch (...)
{}
}
Consturctor для класса foo выдает исключение по какой-то случайной причине. Я понимаю, что деструктор foo никогда не будет вызван, но в этом случае деструктор для p будет вызван?
какая разница, если p - умный указатель для повышения, чем для необработанного указателя на fred.
Благодарю.