default_delete — std::default_delete

default_delete — std::default_delete

std::default_deletestd::unique_ptr가 기본으로 사용하는 삭제자(delete functor)예요. 파괴 시 delete 연산자를 호출해 객체를 해제해요.

unique_ptr가 가리키는 객체를 어떻게 해제할지 결정하는 기본 정책을 제공해요. 배열 특수화는 delete[]를 사용해요. 소멸자나 커스텀 삭제가 필요 없는 대부분의 경우 이 기본 삭제자면 충분해요.

출처: cppreference

본문

std::default_deleteunique_ptr의 기본 삭제자예요.

template<class T> struct default_delete
{
    constexpr default_delete() noexcept = default;
    void operator()(T* ptr) const;
};

template<class T> struct default_delete<T[]>
{
    void operator()(T* ptr) const;
};

기본 템플릿은 operator()에서 delete ptr을 호출해요. 배열 특수화 default_delete<T[]>delete[] ptr을 호출해요.

unique_ptr<T, D>의 삭제자로 쓰여, D를 지정하지 않으면 default_delete<T>가 사용돼요. 이 삭제자는 noexcept로 동작하고, 소유한 포인터를 안전하게 해제해요. 객체를 직접 delete하는 것보다 스마트 포인터와 함께 쓰는 게 예외 안전성 면에서 훨씬 좋아요.

같이 보기

  • std::unique_ptr
  • std::shared_ptr

더 알아보기 (Learn more)

cppreference