博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【原创】注意析构函数的使用
阅读量:6719 次
发布时间:2019-06-25

本文共 448 字,大约阅读时间需要 1 分钟。

清单:虚析构函数使用

1 class X {  2  public:  3   virtual ~X()= default; // 编译器自动生成 defaulted 函数定义体 4  private:  5   int x;  6  };  7  class Y: public X {  8  private:  9   int y; 10  }; 11  int main(){ 12   X* x = new Y; 13   delete x;
清单中x为X指针,
x指向的是Y对象(Y继承X),所以x基类指针只是指向Y对象的基类部分。
如果X的析构函数不是虚函数,delete x时只是调用了X的析构函数,释放了Y的基类子对象,从而造成内存泄漏。所以需要将X的析构函数定义为虚函数,利用多态性。同时为了利用编译器生成的合成析构函数的效率,可以在后面加上=default。
本文链接:  

转载于:https://www.cnblogs.com/cposture/p/4935186.html

你可能感兴趣的文章
【51CTO学院三周年】我的在51CTO学院学习的感想
查看>>
redis+session的共享
查看>>
ls按时间排序输出文件列表
查看>>
03 bash特性
查看>>
Line in和Mic in的区别及使用
查看>>
Linux压缩和解压缩命令
查看>>
Permutations
查看>>
2.9-php使用Redis存储
查看>>
constraint
查看>>
Linux磁盘管理 3月23日课程笔记
查看>>
CentOS 挂载fat32 中文乱码
查看>>
一个好的icon下载网站
查看>>
C++中的substr()
查看>>
【C语言】球体从100米下落问题
查看>>
(问题解决篇)ubuntu更新时,出现错误E: Some index files failed to download。。。
查看>>
Linux学习之路
查看>>
笔记七
查看>>
vsftpd
查看>>
零基础如何学习Python编程
查看>>
gallery长按监听
查看>>