2016. 2. 26. 14:29

* 스마트 포인터

- C++ 언어에서 사용되는 보통의 포인터처럼 기능을 제공하도록 설계된 C++ 객체


* 스마트 포인터 사용 이유


1. 생성과 소멸 작업을 조절할 수 있음

- 스마트 포인터가 생성되고 소멸되는 시기를 프로그래머가 결정

- 스마트 파인터는 생성될 때 기본 값을 널(nullptr) 포인터를 가지기 때문에, 값을 주지 않으면 초기화되지 않는 멍텅구리 포인터가 일으키는 골치 아픔을 원천적으로 봉쇄

- 객체를 가리키고 있던 최후의 포인터가 소멸될 때, 자동으로 그 객체를 삭제하는 기능도 가지고 있음


2. 복사와 대입 동작을 조절할 수 있음

- 스마트 포인터가 복사되거나 대입될 때 일어나는 일을 프로그래머가 결정

- 어떤 경우에는 포인터가 가리키고 있는 객체를 자동으로 복사(깊은 복사)

- 어떤 경우에는 포인터 자체만 복사 (얕은 복사)

- 이외의 경우에는 어떤 동작도 전혀 하지 않음

- 바라는 바를 그대로 이행하는 포인터가 스마트 포인터


3. 역참조 동작을 조절(dereferencing)

- 사용자가 스마터 포인터가 가리키는 객체를 가져오려고 할 때 결정

- 지연 방식의 데이터/명령어 가져오기를 구현 (fetching)