我试图在其中召唤::delete一堂课operator delete。但是不调用析构函数。
我定义的类MyClass,其operator delete过载。全局operator delete也超载。重载operator delete的MyClass将调用重载的全局operator delete。
class MyClass
{
public:
MyClass() { printf("Constructing MyClass...\n"); }
virtual ~MyClass() { printf("Destroying MyClass...\n"); }
void* operator new(size_t size)
{
printf("Newing MyClass...\n");
void* p = ::new MyClass();
printf("End of newing MyClass...\n");
return p;
}
void operator delete(void* p)
{
printf("Deleting MyClass...\n");
::delete p; // Why is the destructor not called here?
printf("End of deleting MyClass...\n");
}
}; …Run Code Online (Sandbox Code Playgroud)