美文网首页
C/C++沉思-----多态时一定要将父类(基类)的析构函数定义

C/C++沉思-----多态时一定要将父类(基类)的析构函数定义

作者: eb51589b1211 | 来源:发表于2016-03-23 15:30 被阅读68次

先来看一段代码:

程序运行截图:

从程序的运行结果来看,程序最后只释放了父类的内存,子类的内存并没有释放。则这段程序产生了内存泄露。那是什么原因导致的呢?

在main函数中new出来的是子类son的对象,采用一个父类father的指针来接收,故在析构的时候,编译器因为只知道这个指针是父类的,所以只将父类部分的内存析构了,而不会去析构子类的内存,就造成了内存泄露,那么如何避免这种情况的产生呢?

将父类的析构函数改为虚函数,就可以避免这种情况。

程序运行截图:

从程序的运行结果可以看出,父类和子类的内存都被析构了。所以在使用多态时一定要将父类的析构函数定义成虚函数,从而避免内存泄露。

相关文章

网友评论

      本文标题:C/C++沉思-----多态时一定要将父类(基类)的析构函数定义

      本文链接:https://www.haomeiwen.com/subject/hynllttx.html