Re[3]: Применение unique_ptr
От: jazzer Россия Skype: enerjazzer
Дата: 12.03.14 07:33
Оценка:
Здравствуйте, Άнoним, Вы писали:

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


J>>Он нужен, чтоб не звать delete руками.


Ά>Это понятно. shared_ptr тоже нужен чтобы не делать delete руками, но с ним понятно — что-то типа указателя со сборкой мусора на подсчете ссылок.


Так из названия же видно.
shared_ptr — для совместного владения, когда на объект может указывать много shared_ptr (можно создавать копии) и объект убивают, только когда все ссылки помрут.
unique_ptr — уникален, т.е. нескольких unique_ptr, указывающих на один и тот же объект, быть не может (копирование запрещено). Но при этом разрешена передача владения от одного unique_ptr другому, с одновременным уничтожением первого.

Ά>Меня интересуют практические, архитектурные области применения unique_ptr.


Архитектурно — везде, где у тебя в программе есть владеющий указатель (т.е. по которому ты зовешь delete, когда он тебе больше не нужен) и он ровно один для каждого объекта, на который он указывает, имеет смысл вместо голого указателя использовать unique_ptr.
Еще один сценарий — функции-фабрики, возвращающие указатель на вновь созданный объект. Такой указатель тоже имеет смысл возвращать как unique_ptr — тогда он гарантировано помрет, даже если результат по какой-то причине не будет использован (например, из-за исключенияв неподходящий момент).
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...
Пока на собственное сообщение не было ответов, его можно удалить.