fork download
  1. #include <iostream>
  2.  
  3. struct Base {
  4. void *operator new( size_t size ) {
  5. std::cout << "Base::operator new" << std::endl;
  6. return ::operator new( size );
  7. }
  8. void operator delete( void *mem ) {
  9. std::cout << "Base::operator delete" << std::endl;
  10. ::operator delete( mem );
  11. }
  12.  
  13. virtual ~Base() { }
  14. virtual Base *f() = 0;
  15. };
  16.  
  17. struct Derived : Base {
  18. virtual Derived *f() {
  19. return new Derived;
  20. };
  21. };
  22.  
  23. int main()
  24. {
  25. Base *b = new Derived;
  26. Base *d = b->f();
  27. delete b;
  28. delete d;
  29. }
  30.  
Success #stdin #stdout 0s 3472KB
stdin
Standard input is empty
stdout
Base::operator new
Base::operator new
Base::operator delete
Base::operator delete