清单:虚析构函数使用

 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。


本文链接:【原创】注意析构函数的使用 http://www.cnblogs.com/cposture/p/4935186.html

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

【原创】注意析构函数的使用相关推荐

  1. (原创)c#学习笔记08--面向对象编程简介01--面向对象编程的含义03--对象的生命周期--构造函数和析构函数...

    8.1.3  对象的生命周期 每个对象都有一个明确定义的生命周期,除了"正在使用"的正常状态之外,还有两个重要的阶段: 构造阶段: 对象最初进行实例化的时期.这个初始化过程称为构造 ...

  2. java 它 引用(基本类型的包装,构造函数和析构函数c++不同)

      一个:java 和c++参考控制 他提到引用,我们会想到java它不喜欢c++里面的指针.当然java内引用和c++里面的引用是不同的. 比如: 比方C++中,我对某一个函数的声明.int a(i ...

  3. php中的构造函数和析构函数,php 中构造函数和析构函数

    构造函数: 在对象实例化时被调用,一个类中只能有一个构造函数,在类中起初始化的作用. 析构函数: 在对象结束时被自动调用. 话不多说,用一段代码来说明两者的区别: //定义一个类 class Pers ...

  4. C++子类析构时要调用父类的析构函数吗?

    析构函数调用的次序是先派生类的析构后基类的析构,在基类的的析构调用的时候,派生类的信息已经全部销毁了.定义一个对象时先调用基类的构造函数.然后调用派生类的构造函数:析构的时候恰好相反:先调用派生类的析 ...

  5. c++构造函数和析构函数的调用顺序研究

    构造函数与析构函数的调用顺序 构造函数与析构函数的调用顺序 构造函数与析构函数的调用顺序 1)当类中有成员变量是其它类的对象时,首先调用成员变量的构造函数,调用顺序与声明顺序相同:之后调用自身类的构造 ...

  6. C++学习笔记25,析构函数总是会宣布virtual

    为了永远记住析构函数声明virtual----><<effective c++>> 为这句话不一定对,但无需质疑的是这句话是非常实用的. 查看以下的样例: #includ ...

  7. 《从零开始学Swift》学习笔记(Day 40)——析构函数

    原创文章,欢迎转载.转载请注明:关东升的博客 与构造过程相反,实例最后释放的时候,需要清除一些资源,这个过程就是析构过程.在析构过程中也会调用一种特殊的方法deinit,称为析构函数.析构函数dein ...

  8. C++11六大函数(构造函数,移动构造函数,移动赋值操作符,复制构造函数,赋值操作符,析构函数)

    转载自:http://blog.csdn.net/jofranks/article/details/17438955 版权声明:本文为博主原创文章,未经博主允许不得转载. 在C++中,有三大函数复制控 ...

  9. **修炼一名程序员的职业水准(林庆忠__署名原创)**

    业精于勤荒于嬉,行成于思毁于随.以此文章激励自己. 修炼一名程序员的职业水准(林庆忠__署名原创) 作者:林庆忠,1990年毕业于昆明工学院计算机软件专业,后又于1999年毕业在南京大学 完成软件工程 ...

最新文章

  1. vs2015编译android,VS2015 Update2 构建 Android 程序问题汇总
  2. 第16课:项目实战——利用 PyTorch 构建 CNN 模型
  3. looper message handler之间的关系
  4. 小白 vue-cli 项目打包
  5. KubeVela 成为 CNCF 沙箱项目,让云端应用交付更加简单
  6. Android网络课程笔记-----本地音乐播放
  7. 【洛谷1341】无序字母对(欧拉回路)
  8. php 扩展加载顺序,关于PHP中extension加载顺序问题的解决方法
  9. 微信扫描二维码在内置浏览器打不开文件的下载链接怎么办?哪些api接口可以解决...
  10. ThinkPHP/---微信支付PC流程
  11. 软件园区网络设计之网络详细设计
  12. CTF杂项-BUUCTF竞赛真题WriteUp(2)
  13. 电脑总是弹出explorer.exe->应用程序错误界面(电脑小妙招)
  14. OpenCV之光流法运动目标跟踪
  15. 基于语音的情绪识别系统(Python)
  16. 搭建自已的turn服务器
  17. Pandas函数方法分类 参数说明+实例分析!!
  18. android组合按键截屏,三星安卓手机截图组合键图文汇总(4种)
  19. 1646. Prime Path
  20. 好书推荐:《Google.Android开发入门与实战》

热门文章

  1. Python模块(3)--PIL 简易使用教程
  2. springcloud阿里巴巴五大组件_如何无缝迁移 SpringCloud/Dubbo 应用到 Serverless 架构
  3. Java调用百度OCR文字识别的接口
  4. Linux学习笔记(五)
  5. 聊聊并发——生产者消费者模式
  6. OpenCL(CUDA5.0) + Visual Studio 2010 环境配置
  7. 运动并不是最好的减肥办法,控制饮食也不是
  8. js中动态引入css样式文件
  9. my40_MySQL锁概述之意向锁
  10. asp.net ajax的学习第一篇