次の方法で共有


auto_ptr::auto_ptr

auto_ptrオブジェクトのコンストラクター。

explicit auto_ptr( 
   Type* _Ptr = 0 
) throw( ); 
auto_ptr( 
   auto_ptr<Type>& _Right 
) throw( ); 
auto_ptr( 
   auto_ptr_ref<Type> _Right 
) throw( ); 
template<class Other> 
   auto_ptr( 
   auto_ptr<Other>& _Right 
) throw( );

パラメーター

  • _Ptr
    auto_ptr をカプセル化するオブジェクトへのポインター。

  • _Right
    コンストラクターはコピーする auto_ptr オブジェクト。

解説

最初のコンストラクターは myptrで _Ptr、割り当てられたオブジェクトに格納されたポインターを格納します。 2 番目のコンストラクターは _Rightの保存して _Rightに格納されるポインターの所有権を譲渡します。myptrリリース

3 番目のコンストラクターは、第 2 と同じように動作します。ただし、を格納します。ref。ref が _Rightに格納されている参照である myptrrelease

テンプレートのコンストラクターは 2 番目のコンストラクターで [種類] へのポインターに変換される [その他] へのポインターが暗黙的であれば、同じように動作します。

使用例

// auto_ptr_auto_ptr.cpp
// compile with: /EHsc
#include <memory>
#include <iostream>
#include <vector>

using namespace std;

class Int 
{
public:
   Int(int i) 
   {
      cout << "Constructing " << ( void* )this  << endl; 
      x = i;
      bIsConstructed = true;
   };
   ~Int( ) 
   {
      cout << "Destructing " << ( void* )this << endl; 
      bIsConstructed = false;
   };
   Int &operator++( ) 
   {
      x++;
      return *this;
   };
   int x;
private:
   bool bIsConstructed;
};

void function ( auto_ptr<Int> &pi )
{
   ++( *pi );
   auto_ptr<Int> pi2( pi );
   ++( *pi2 );
   pi = pi2;
}

int main( ) 
{
   auto_ptr<Int> pi ( new Int( 5 ) );
   cout << pi->x << endl;
   function( pi );
   cout << pi->x << endl;
}
  

必要条件

ヘッダー: <memory>

名前空間: std

参照

関連項目

auto_ptr クラス