원시 포인터와 마찬가지로 유니크 포인터를 역참조해서 객체에 접근할 수 있다.
std::cout << *pname << std::endl; // Algernon을 출력
배열을 가리키는 unique_ptr<T> 객체도 생성할 수 있다.
size_t len{10}; std::unique_ptr<int[]> pnumbers {new int[len]};
이 코드는 자유 공간에 len개 원소들로 된 배열을 생성하고, 이 배열을 가리키는 unique_ptr 객체를 생성한다. make_unique<T>() 함수를 호출해도 같은 결과를 얻을 수 있다.
auto pnumbers = std::make_unique<int[]>(len);
이 코드도 힙에 len개 원소들로 된 배열을 생성하고, 이 배열을 가리키는 unique_ptr 객체를 생성한다. unique_ptr 변수에 인덱스를 사용해 배열 원소에 접근할 수 있다. 값을 바꾸는 방법은 다음과 같다.
for(size_t i{} ; i < len ; ++i) pnumbers[i] = i * i;
이 코드는 배열 원소의 값을 인덱스 위치의 제곱으로 설정한다. 물론, 값을 출력할 때도 첨자 연산자를 사용할 수 있다.
for(size_t i{} ; i< len ; ++i) std::cout << pnumbers[i] << std::endl;;