Re[3]: Выход из функции при ошибке
От: jazzer Россия Skype: enerjazzer
Дата: 27.12.02 07:52
Оценка: 3 (1)
Здравствуйте, menify, Вы писали:

M>Здравствуйте, ssm, Вы писали:


M>

ssm>>истина лежит в использовании, к примеру, std::auto_ptr
M>Я плохо знаю C++, что такое std::auto_ptr?
M>Как это будет выглядеть, хотя бы примерно?

это класс, который всасывает указателдь на что-нибудь (созданный при помощи new), а в деструкторе он его удаляет при помощи delete:
struct A
{
   int i;
   double j;
};
void f()
{
   std::auto_ptr<A> ap(new A); // создали
   ap->i = 7;                  // работаем, как с обычным указателем
   ap->j = 3.14;
}                              // а здесь объект ap выходит из области видимости и удаляется,
                               // что приводит к вызову деструктора, а в нем вызовется delete.
                               // то же самое произойдет при return или возбуждении исключения.

а то, что delete не делает ничего, если ему подсунуть нулевой указатель, то вообще можно быть спокойным и не бояться, что при такой автоматической очистке произойдет что-то не то.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.