unique_ptr
unique_ptr도 앞에서 설명한 shared_ptr처럼 동적으로 할당된 객체를 관리하는 스마트 포인터다. shared_ptr과 다른점은 이름에서 나타나듯이 객체를 독점적으로 관리한다는 것이다. 그리고 unique_ptr은 원천적으로 복사 생성자와 할당 연사자가 구현되어 있지 않다. 즉, 복사를 할 수 없다. 단지 이동(std::move)만 할 수 있다.
unique_ptr 사용하기
<unique_ptr 사용 예제>
관리하는 인스턴스 접근
shared_ptr과 마찬가지로 인스턴스의 포인터를 얻을 때는 'get()', 참조를 얻을 때는 operator '*', 인스턴스이 멤버에 접근할 때는 operator '->'를 사용한다.
<unique_ptr이 관리하는 인스턴스 사용하기>
메모리 해제 및 변경
unique_ptr에서 관리하는 메모리를 해제하고 싶을 때는 release() 멤버 함수를 호출한다. unique_ptr 역시 shared_ptr처럼 'reset()'과 'swap()'기능을 지원한다.
<release(), resert(, swap() 사용 예제>
배열 객체 다루기
배열 객체에 unique_ptr을 사용할 때는 템플릿 인자에 배열임을 정의한다. shared_ptr과 달리 삭제자를 지정하지 않아도 된다.
<배열 객체 다루기 예제>
삭제자 지정하기
unique_ptr은 삭제자를 지정하려면 템플릿 인자에 형을 선언해야 하는점이 shared_ptr과 다르다.
<삭제자 사용 예제>
출처 : Thinking About C++ STL 프로그래밍 (최홍배 지음)
'C++ > STL' 카테고리의 다른 글
16. array (0) | 2017.10.20 |
---|---|
15. 튜플(tuple) (0) | 2017.10.19 |
13. 메모리관리1 (shared_ptr) (0) | 2017.10.16 |
12. C++11 기초 2(range based for, enum, nullptr ) (0) | 2017.10.13 |
11. C++11 기초 1(auto, 람다(lambda) ) (0) | 2017.10.12 |