12
delete ptr
はデストラクタを呼び出すことで、delete
はoperator delete(ptr)
となりますか?つまり、delete ptr
は最初にデストラクタをptr
、次に割り当てられたメモリを解放するためにoperator delete(ptr)
を呼び出しますか?次に、delete ptr
は技術的に次のようになります。削除対オペレータの削除(およびvoidポインタ)
T * ptr = new T;
//delete ptr equivalent:
ptr->~T();
::operator delete(static_cast<void *>(ptr));
?
はい、唯一の違いは、あなたが 'operator delete'をオーバーロードできるという事実の他にあります。 –