重複の可能性:
std::auto_ptrからstd::unique_ptr
どのC++スマートポインター実装が利用可能ですか?
私がこれを持っているとしましょう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に転送し、コンパイルエラーは発生しません。
しかし、 auto_ptrの代わりにunique_ptrを使用すると、コンパイラエラーが発生します。なぜC++はこれを許可しないのですか?そして、これら2つのスマートポインターの主な違いは何ですか?何を使う必要があるのですか?