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

+ Recent posts