As Carlton says, the memory was not overwritten, you can try the following code:
int main()
{
Test *obj;
obj = new Test;
obj->destroy();
Test *another_obj = new Test(7, 8);
obj->print();
return 0;
}
This printed x = 7 y = 8 on my machine, you can play around with the code. It probably will give you different results when you try allocating memory between obj->destroy() and obj->print()
The main point is this is undefined behavior
EDIT:
I debugged the code to illustrate it more clear. you can see at first obj's address is 0x100104aa0, then when delete this was executed, the memory was not changed, but, not changing doesn't mean anything, to your program, this means memory 0x100104aa0 is free to use(there's a point here, if the program is going to write to(allocate) some memory, then it makes no difference if the memory is initialized/cleared or not, so for efficiency, free to use memory are not cleared)
Then when I initialized sss, it was allocated at the same address, with new x and y values, note that after the initialization of sss, obj is still pointing to 0x100104aa0, which happens to be the same address as sss, which is the reason calling obj() gives you x = 7 y = 8.
* thread #1: tid = 0x1386d, 0x0000000100000e08 a.out`main + 72 at t.cpp:19, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
frame #0: 0x0000000100000e08 a.out`main + 72 at t.cpp:19
16 {
17 Test *obj;
18 obj = new Test(1, 2);
-> 19 obj->destroy();
20 Test *sss = new Test(7, 8);
21 obj->print();
22 return 0;
(lldb) p obj
(Test *) $5 = 0x0000000100104aa0
(lldb) x $5
0x100104aa0: 01 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 ................
0x100104ab0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
(lldb) n
Process 5010 stopped
* thread #1: tid = 0x1386d, 0x0000000100000e17 a.out`main + 87 at t.cpp:20, queue = 'com.apple.main-thread', stop reason = step over
frame #0: 0x0000000100000e17 a.out`main + 87 at t.cpp:20
17 Test *obj;
18 obj = new Test(1, 2);
19 obj->destroy();
-> 20 Test *sss = new Test(7, 8);
21 obj->print();
22 return 0;
23 }
(lldb) p obj
(Test *) $6 = 0x0000000100104aa0
(lldb) x $6
0x100104aa0: 01 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 ................
0x100104ab0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
(lldb) n
Process 5010 stopped
* thread #1: tid = 0x1386d, 0x0000000100000e4b a.out`main + 139 at t.cpp:21, queue = 'com.apple.main-thread', stop reason = step over
frame #0: 0x0000000100000e4b a.out`main + 139 at t.cpp:21
18 obj = new Test(1, 2);
19 obj->destroy();
20 Test *sss = new Test(7, 8);
-> 21 obj->print();
22 return 0;
23 }
(lldb) x $6
0x100104aa0: 07 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 ................
0x100104ab0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
(lldb) p sss
(Test *) $7 = 0x0000000100104aa0
(lldb) p obj
(Test *) $8 = 0x0000000100104aa0
(lldb)