더북(TheBook)

스마트 포인터 타입을 위한 템플릿을 이용하려면 memory 헤더를 include 지시자로 포함해야 한다. 계산대에서 기다리는 고객을 기록하는 queue 컨테이너에는 PCustomer 원소를 저장한다. PCustomerusing 지시자로 정의한 std::unique_ptr<Customer>의 별칭으로 입력하는 수고를 덜어줄 것이다. PCustomer 객체는 유니크 포인터라서 복제될 수 없으므로 add() 함수의 매개변수는 우측값 참조여야 하고, add() 함수가 호출될 때 지정된 인수는 컨테이너 안으로 이동하게 된다.

원소가 유니크 포인터일 때는 항상 이동해야 한다. 또한, 매개변수는 const가 될 수 없다. 클래스 정의는 이 정도 수정이면 되고, unique_ptr를 사용하기 위해 수정하는 분량으로는 양호한 편이라고 할 수 있다.

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