default_delete — std::default_delete
default_delete — std::default_delete
std::default_delete는 std::unique_ptr가 기본으로 사용하는 삭제자(delete functor)예요. 파괴 시 delete 연산자를 호출해 객체를 해제해요.
unique_ptr가 가리키는 객체를 어떻게 해제할지 결정하는 기본 정책을 제공해요. 배열 특수화는 delete[]를 사용해요. 소멸자나 커스텀 삭제가 필요 없는 대부분의 경우 이 기본 삭제자면 충분해요.
출처: cppreference
본문
std::default_delete는 unique_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_ptrstd::shared_ptr