虚析构函数说明
假设B继承A
B* b = new B(); delete b;的时候会先调用B的析构函数,然后调用A的析构函数
A* a = new B(); delete a;的时候只会调用A的析构函数。
当A的析构函数是虚函数的时候,上面第二种情况会变成和第一种情况一样。
由上述情况得出2点结论:
1 虚函数虚表里面的指针会被设置为为真正分配内存的对象的函数指针
2 无论何种情况,当子类析构函数调用之后都会调用父类的析构函数。
本文共 268 字,大约阅读时间需要 1 分钟。
虚析构函数说明
假设B继承A
B* b = new B(); delete b;的时候会先调用B的析构函数,然后调用A的析构函数
A* a = new B(); delete a;的时候只会调用A的析构函数。
当A的析构函数是虚函数的时候,上面第二种情况会变成和第一种情况一样。
由上述情况得出2点结论:
1 虚函数虚表里面的指针会被设置为为真正分配内存的对象的函数指针
2 无论何种情况,当子类析构函数调用之后都会调用父类的析构函数。
转载于:https://my.oschina.net/yizhangxyz/blog/667417