std::auto_ptr<T>:: auto_ptr
From cppreference.net
C++
Memory management library
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
explicit
auto_ptr
(
X
*
p
=
0
)
throw
(
)
;
|
(1) |
(C++11에서 사용 중단됨)
(C++17에서 제거됨) |
|
auto_ptr
(
auto_ptr
&
r
)
throw
(
)
;
|
(2) |
(C++11에서 사용 중단됨)
(C++17에서 제거됨) |
|
template
<
class
Y
>
auto_ptr ( auto_ptr < Y > & r ) throw ( ) ; |
(3) |
(C++11에서 사용 중단됨)
(C++17에서 제거됨) |
|
auto_ptr
(
auto_ptr_ref
<
X
>
m
)
throw
(
)
;
|
(4) |
(C++11에서 사용 중단됨)
(C++17에서 제거됨) |
관리할 객체를 참조하는 포인터로부터
auto_ptr
을 생성합니다.
1)
auto_ptr
를 포인터
p
로 생성합니다.
2)
auto_ptr
를
r
에서 보유한 포인터로 생성합니다.
r.
release
(
)
가 호출되어 객체의 소유권을 획득합니다.
3)
(2)와 동일합니다.
Y
*
는
T
*
로 암시적으로 변환 가능해야 합니다.
4)
auto_ptr
인스턴스가
m
이 참조하는
auto_ptr
인스턴스에 보유된 포인터로
auto_ptr
을 생성합니다.
객체의 소유권을 획득하기 위해
m
이 보유하는
auto_ptr p
에 대해
p.
release
(
)
가 호출됩니다.
auto_ptr_ref
는
auto_ptr
에 대한 참조를 보유하는 구현 정의 타입입니다.
std::auto_ptr
는 이 타입으로
암시적으로 변환 가능하며
이 타입으로부터 할당 가능합니다
. 구현체는 이 템플릿에 다른 이름을 제공하거나 다른 방식으로 동등한 기능을 구현할 수 있습니다.
매개변수
| p | - | 관리할 객체에 대한 포인터 |
| r | - |
객체의 소유권을 이전할 또 다른
auto_ptr
|
| m | - |
auto_ptr
에 대한 참조를 보유하는 구현 정의 타입
|
참고 사항
auto_ptr_ref
의 생성자와 복사 할당 연산자는 이름 없는 임시 객체로부터
std::auto_ptr
을 복사 생성하고 할당할 수 있도록 제공됩니다. 복사 생성자와 복사 할당 연산자가 인자를 비-const 참조로 받기 때문에, 이들은 rvalue 인자를 직접 바인딩할 수 없습니다. 그러나
사용자 정의 변환
이 실행된 후(이 과정에서 원본
auto_ptr
이 해제됨), 값으로
auto_ptr_ref
를 받는 생성자나 복사 할당 연산자를 호출할 수 있습니다. 이는
이동 의미론
의 초기 구현입니다.