天天看点

delete 调用 虚析构函数失败

场景: 

class A

{

    int i;

    A() { memset(this, 0, sizof(A))}; // 初始化

   virtual ~A() {}

}

main()

{

     A* a = new A;

     delete a;    //程序会死机。 

}

总结:

为什么会死机?

A() { memset(this, 0, sizof(A))}; // 初始化

会把虚指针置空, 无法正确 的调用析构函数。重而会生成core. 

虚指针、 虚表:

https://blog.csdn.net/qq_34484472/article/details/78232465

Java没有虚函数。 所有的函数都是默认动态绑定的。

https://www.runoob.com/java/java-polymorphism.html

继续阅读