C++11부터 생긴 `std::unique_ptr`과 기존에 `std::auto_ptr`의 차이를 알고싶습니다. 둘이 사용법은 비슷한것 같던데 정확이 무슨 차이가 있는가요?


C++11부터 생긴 std::unique_ptr과 기존에 std::auto_ptr의 차이를 알고싶습니다. 둘이 사용법은 비슷한것 같던데 정확이 무슨 차이가 있는가요?

  • 2016년 02월 23일에 작성됨

조회수 130


1 답변


좋아요
0
싫어요
채택취소하기

대부분의 경우 둘은 동일한 일을 합니다. 다만 다른점은 auto_ptr은 복사(copy)가 가능한 반면, unique_ptr은 이동(move)만 가능합니다.

무슨말인가 하면, auto_ptr

std::auto_ptr<int> p(new int);
std::auto_ptr<int> p2 = p; 

가 가능하지만, unique_ptr은 이게 불가능 합니다. unique_ptr로 위 코드를 흉내내려면

std::unique_ptr<int> p(new int);
std::unique_ptr<int> p2 = std::move(p);

같이 써야 하지요.

다른 차이로는 unique_ptr이 배열을 좀 더 잘 다룬다는 점입니다. auto_ptr에서는 delete를 call하지만 unique_ptrdelete[]를 call합니다.

  • 2016년 02월 23일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close