2012-05-13 56 views
12

delete ptr是否與operator delete(ptr)不同僅在此,即delete調用ptr析構函數?或換句話說,delete ptr是否首先調用ptr的析構函數,然後operator delete(ptr)釋放分配的內存?然後是delete ptr技術上等同於以下內容:刪除vs操作員刪除(和虛擬指針)

T * ptr = new T; 

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

+3

是的,這是唯一的區別,除了你可以重載'operator delete'。 –

回答

8

delete ptr會做超負荷分辨率operator delete,所以它可能不會調用全局::operator delete

但除此之外,是的。 delete運算符調用相關的析構函數(如果有),然後調用operator delete