可以说我有这个struct
:
struct bar
{
};
当我像这样使用auto_ptr时:
void foo()
{
auto_ptr<bar> myFirstBar = new bar;
if( )
{
auto_ptr<bar> mySecondBar = myFirstBar;
}
}
然后在auto_ptr<bar> mySecondBar = myFirstBar;
C++ 将所有权从 myFirstBar 转移到 mySecondBar 并且没有编译错误。
但是当我使用unique_ptr而不是auto_ptr时,我得到一个编译器错误。为什么 C++ 不允许这样做?这两个智能指针之间的主要区别是什么?当我需要使用什么?