若要檢視英文版的文章,請選取 [原文] 核取方塊。您也可以將滑鼠指標移到文字上,即可在快顯視窗顯示英文原文。
譯文
原文

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

in 物件的指標 auto_ptr 封裝。

_Right

建構函式將複製的 auto_ptr 物件。

第一個建構函式在 myptr儲存 _Ptr ,所配置物件中儲存的指標。第二個建構函式會將 _Right儲存的指標的擁有權,將 _Right。在 myptr版本

第三個建構函式一般作業的第二個相同,不過,它儲存 rightref。在 myptrreleaseref ,為儲存於 _Right的參考。

在對 [其他] 的指標可以隱含轉換為對 [型別] 下,的指標範本建構函式一般作業的第二個建構函式相同。

// 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;
}
建構 00311AF8
5
7
解構的 00311AF8

需求

標頭: <memory>

命名空間: std

顯示: