더북(TheBook)

원시 포인터와 마찬가지로 유니크 포인터를 역참조해서 객체에 접근할 수 있다.

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;;
 

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.