#include <new>
#include <cstdlib>
#include <iostream>
#include <stdexcept>
struct foo {};
inline void* operator new(size_t size, foo*) throw (std::bad_alloc)
{
std::cout << "my new " << size << std::endl;
return malloc(size);
}
inline void operator delete(void* p, foo*) throw()
{
std::cout << "my delete" << std::endl;
free(p);
}
int main()
{
delete new((foo*)NULL) foo;
}
आउटपुट (via ideone) के साथ ऑपरेटर को हटा दें:नई ओवरलोडिंग और वैकल्पिक तर्क
my new 1
मेरे सोच सी ++ एक वस्तु new'd इसके मिलान के साथ अतिरिक्त तर्क के साथ मुक्त होता है कि एक ही तर्क का हटाना था, लेकिन मैं स्पष्ट रूप से गलत था।
मेरे अधिभारित डिलीट को कॉल करने के लिए ऊपर दिए गए कोड को पाने का सही तरीका क्या है?
सी में कोई स्थान-हटाना अभिव्यक्ति नहीं है ++। आपको ऑब्जेक्ट को मैन्युअल रूप से नष्ट करने की आवश्यकता है। –