If the class A
in unique_ptr<A>
it's own destructor, is it necessary to declare a deleter to ensure that the unique pointer uses that destructor? The example I am thinking of is that A
has a member mx
of type user_matrix
(a name I just made up) which needs to call a function free(...)
to release its memory, one would define
~A(){ user_matrix::free(mx); /*etc*/}
Since default_deleter<>
will call delete
, it is my understanding that that should use ~A()
. However, the example with the opening and closing of directories in Section 5.2, under "Deleters for Associated resources", of the book of Josuttis (The C++ Standard Library: A Tutorial and Reference) suggests one may need to declare a special deleter to do this, so I am confused.... Is this because, in the given example, the class DIR
doesn't have a destructor that uses closedir(...)
?
delete
call thatstd::unique_ptr
does will call the destructor. – Disprizedelete
when younew
ed,delete[]
when younew[]
ed. Do similarly for other kinds of resources. – Bessiebessy