#include <iostream>
struct A {};
struct B: A {
static void *operator new(std::size_t n) {
std::cout << "B::operator new" << std::endl;
return ::operator new(n);
}
static void operator delete(void *p) {
std::cout << "B::operator delete" << std::endl;
::operator delete(p);
}
};
int main()
{
A *a = new B;
delete a;
}