14

デストラクタを呼び出すこれだけとはdelete ptr異なりますか?つまり、最初にのデストラクタを呼び出してから、割り当てられたメモリを解放しますか?その場合、技術的には次のようになります。operator delete(ptr)deleteptrdelete ptrptroperator delete(ptr)delete ptr

T * ptr = new T;

//delete ptr equivalent:
ptr->~T();
::operator delete(static_cast<void *>(ptr));

4

1 に答える 1

9

delete ptrの過負荷解決を行うためoperator delete、グローバルを呼び出さない場合があります::operator delete

しかしそうでなければ、そうです。deleteオペレーターは、関連するデストラクタがある場合はそれを呼び出してから、を呼び出しますoperator delete

于 2012-05-13T17:43:13.353 に答える