virtual虚析构函数不会造成内存的重复释放吗?
int main() { //Soldier soldier; Person *p = new Soldier; p->play(); delete p; p = NULL; system("pause"); return 0; }
Person
Soldier
Person -- play
James
~Soldier
~Person
从堆中分配一块内存创建Soldier的对象,
执行Soldier的析构函数~Soldier之后就释放掉了该内存,
那么在执行Person的虚构函数~Person不会造成内存的重复释放呢?
为什么呢?