Of course you get an infinite loop (or perhaps a stack overflow). delete
calls the destructor before deallocating the memory, so if that in turn tries to delete the object that's already being deleted, then you're in a recursive death spiral.
The simple solution is: don't do that.