p517

在C++中,基类指针可以指向一个派生类的对象。如果基类的析构函数不是虚函数,当需要delete这个指向派生类的基类指针时,就只会调用基类的析构函数,而派生类的析构函数无法被调用。容易造成内存泄漏。

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

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

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

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

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

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-21
  • 2021-11-07
猜你喜欢
  • 2022-12-23
  • 2022-01-29
  • 2022-02-08
  • 2022-01-24
  • 2021-08-10
相关资源
相似解决方案