Возможный дубликат:
std:: auto_ptr в std:: unique_ptr
Какие возможности С++ Smart Pointer доступны?
Скажем, у меня есть это struct
:
struct bar
{
};
Когда я использую auto_ptr следующим образом:
void foo()
{
auto_ptr<bar> myFirstBar = new bar;
if( )
{
auto_ptr<bar> mySecondBar = myFirstBar;
}
}
тогда в auto_ptr<bar> mySecondBar = myFirstBar;
С++ переносит право собственности с myFirstBar на mySecondBar и не возникает ошибка компиляции.
Но когда я использую unique_ptr вместо auto_ptr, я получаю ошибку компилятора. Почему С++ не позволяет это? И каковы основные различия между этими двумя умными указателями? Когда мне нужно что-то использовать?