Есть ли противоречие между этими двумя источниками по поводу класса шаблона `auto_ptr`?

Этот сайт указывает на « Владение, источники и приемники »:

«Когда вы копируете auto_ptr , вы автоматически передаете право собственности от источника auto_ptr целевому auto_ptr ; если цель auto_ptr уже владеет объектом, этот объект сначала освобождается . После копирования только цель auto_ptr владеет указателем и удалит его в должное время, в то время как источник возвращается в нулевое состояние и больше не может использоваться для ссылки на принадлежащий объект. ".

Теперь рассмотрим определение operator = () для templacte class auto_ptr в главе 14, стр. 368 книги Страуструпа The C ++ Programming Language Third Edition. :

auto_ptr & operator = (auto_ptr & a) throw () {ptr = a.ptr; a.ptr = 0;}

Я не вижу, как оператор освобождает объект, на который обратился ptr , в случае ptr! = 0 !

8
задан sbi 20 February 2012 в 12:12
поделиться