2012-05-13 22 views
12

delete ptr केवल operator delete(ptr) से भिन्न है, deleteptr विनाशक कहता है? या दूसरे शब्दों में, delete ptr पहले आवंटित स्मृति मुक्त करने के लिए ptr और फिर operator delete(ptr) का विनाशक कहता है? फिर delete ptr तकनीकी रूप से निम्नलिखित के बराबर है:हटाएं बनाम ऑपरेटर हटाएं (और शून्य पॉइंटर)

T * ptr = new T; 

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

?

+3

हां, यह एकमात्र अंतर है, इस तथ्य के अलावा कि आप 'ऑपरेटर डिलीट' ओवरलोड कर सकते हैं। –

उत्तर

8

delete ptroperator delete के लिए अधिभार संकल्प करना होगा, तो यह वैश्विक ::operator delete

लेकिन अन्यथा फोन नहीं कर सकते हैं, हाँ। delete ऑपरेटर प्रासंगिक विनाशक को कॉल करता है, यदि कोई है, और फिर operator delete पर कॉल करता है।

संबंधित मुद्दे