析构函数是否必须为虚函数?

面试回来收集的答案

析构函数可以为虚函数,也可以不为虚函数。(更多的时候不为虚函数)
设计析构函数为虚函数,主要是考虑到继承。
当A为基类,B为A的继承类,考虑如下情况:
A *p = new B();
.....
delete p;
如果此时A的析构函数不是虚函数,那么在delete p的时候就会调用A的析构函数,而不会调用B的析构函数,这样就会造成B的资源没有释放。
而如果A的析构函数为虚函数,那么就会调用B的析构函数,一切正常

猜你喜欢

转载自blog.csdn.net/q357010621/article/details/80025145