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 개체 복사 생성자가 있습니다.
설명
첫 번째 생성자 저장소 _Ptr 에서 myptr, 할당 된 개체에 저장 된 포인터입니다.두 번째 생성자 저장 포인터의 소유권 전송 _Right에 저장 하 여 _Right.release in myptr.
저장을 제외 하 고 세 번째 생성자는 두 번째 동작 오른쪽.ref. 해제 에 myptr여기서 ref 참조에 저장 된 _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;
}
요구 사항
헤더: <memory>
네임 스페이스: std