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

조회수 1677회

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

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합니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)