#include <iostream>
class Base
{
public:
Base(void)
{
}
virtual ~Base(void) noexcept
{
}
};
class Test : public Base
{
public:
Test(void) : Base()
{
}
~Test(void) noexcept override
{
}
void *operator new (size_t) throw ()
{
std::cout << "Overloaded operator new" << std::endl;
return ::new Test;
}
void operator delete (void*) noexcept
{
std::cout << "Overloaded operator delete" << std::endl;
}
};
int main()
{
Base *b = new Test();
delete b;
return 0;
}
/*
run:
Overloaded operator new
Overloaded operator delete
*/