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.

Благодарю.

Ответы на вопрос(4)

Ваш ответ на вопрос