确定基类有虚析构函数


class A{public:    A()    {        cout<<"A constructor"<<endl;    }~A()    {        cout<<"A destructor"<<endl;    }};

class B: public A{public:    B()    {        cout<<"B constructor"<<endl;    }~B()    {        cout<<"B destructor"<<endl;    }

};int main(){    A * p =new B();    delete p;return 0;}

  执行结果:

对此解释:C++语言标准规定,当通过基类指针删除派生类的对象,而基类又没有虚析构函数,结果是不确定的。

对此,将A的析构函数改为虚函数:

class A{public:    A()    {        cout<<"A constructor"<<endl;    }virtual ~A()    {        cout<<"A destructor"<<endl;    }};

  执行结果:

  结果正确。

以上我们是在堆上分配的内存。

改写main函数,在栈上分配:

int main(){    B b;

return 0;}

  结果同上。分配在栈上的对象自动调用构造函数与析构函数。

转载于:https://www.cnblogs.com/DanielZheng/archive/2011/08/03/2126218.html

Effective C++ 学习笔记(11)相关推荐

  1. SpringMVC:学习笔记(11)——依赖注入与@Autowired

    SpringMVC:学习笔记(11)--依赖注入与@Autowired 使用@Autowired 从Spring2.5开始,它引入了一种全新的依赖注入方式,即通过@Autowired注解.这个注解允许 ...

  2. Hadoop学习笔记—11.MapReduce中的排序和分组

    Hadoop学习笔记-11.MapReduce中的排序和分组 一.写在之前的 1.1 回顾Map阶段四大步骤 首先,我们回顾一下在MapReduce中,排序和分组在哪里被执行: 从上图中可以清楚地看出 ...

  3. HALCON 20.11:深度学习笔记(11)---目标检测

    HALCON 20.11:深度学习笔记(11)---目标检测 HALCON 20.11.0.0中,实现了深度学习方法. 本章讲解了如何使用基于深度学习的对象检测. 通过对象检测,我们希望在图像中找到不 ...

  4. 台大李宏毅Machine Learning 2017Fall学习笔记 (11)Convolutional Neural Network

    台大李宏毅Machine Learning 2017Fall学习笔记 (11)Convolutional Neural Network 本博客主要整理自: http://blog.csdn.net/x ...

  5. Effective C++ 学习笔记 第七章:模板与泛型编程

    第一章见 Effective C++ 学习笔记 第一章:让自己习惯 C++ 第二章见 Effective C++ 学习笔记 第二章:构造.析构.赋值运算 第三章见 Effective C++ 学习笔记 ...

  6. 华为HCIA-datacom 学习笔记11——AAA原理与配置

    华为HCIA-datacom 学习笔记11--AAA原理与配置 AAA原理与配置 1.AAA概述 认证(authentication):验证用户是否获得访问权,确定哪些用户可以访问网络 授权(auth ...

  7. 点云学习笔记11——VoxelNet算法+代码运行

    点云学习笔记11--VoxelNet算法+代码运行 一.算法分析 摘要 介绍 相关工作 1.2. 贡献 2.VoxelNet 2.1.特征学习网络 2.1.1 特征学习网络 二.代码复现 2.1.环境 ...

  8. 凸优化学习笔记 11:对偶原理 拉格朗日函数

    前面讲了凸优化问题的定义,以及一些常见的凸优化问题类型,这一章就要引入著名的拉格朗日函数和对偶问题了.通过对偶问题,我们可以将一些非凸问题转化为凸优化问题,还可以求出原问题的非平凡下界,这对复杂优化问 ...

  9. Python学习笔记11:函数修饰符

    Python学习笔记11:函数修饰符 Python有很多有趣的特性,其中函数修饰符就是一个. 我们在之前的那个web应用示例中用过如下写法: @web.route('/log') @符号后边的,就是一 ...

  10. MIPS汇编语言学习笔记11:整数减法 (mult方法)

    任务:整数相乘,并输出打印. 代码: .dataintA: .word 5intB: .word 2 .textli $v0, 1lw $a1, intAlw $a2, intBmult $a1, $ ...

最新文章

  1. 设置PLSQ 连接oracle数据库
  2. 没有日志,只有MDF文件如何恢复数据库(转)[
  3. MC34063组成DC-DC电路
  4. HDU1846 - Brave Game【巴什博弈】
  5. 中如何将方形图片转换成圆形图片_【PS】PS中不可不知的实用技巧!你都掌握了吗?...
  6. 缓存学习中未命中的缓存情况的处理
  7. 集合类 List 的那些坑
  8. Git学习笔记(四)
  9. Redis 真得那么好用吗?
  10. vc 可用的正则表达式库
  11. python bytes_Python每天必学之bytes字节
  12. webform CustomValidator
  13. c# winform Get请求接口
  14. winrar 注册码
  15. 三角网导线平差实例_附合导线平差步骤
  16. 春季校园招聘简历投递量已超去年同期;亚太房地产市场现逢低买入良机 | 美通企业日报...
  17. swf游戏保存进度_手机玩swf游戏你需要知道的冷知识
  18. windows易升_直播用“易升”工具升级至Windows10 2020年5月更新
  19. 微软MSDN Web cast系列视频教程集锦
  20. [项目记录]用vue-electron搭建pc网易云音乐程序(2)——搭建基本页面

热门文章

  1. Win10技巧:16个系统优化设置小技巧,大幅度提升你的电脑性能!
  2. 程序人生:提高代码运行效率的9个技巧
  3. 数据优化:求求你别再用offset和limit分页了
  4. php join a.id b.id,mysql求助 请问where a.id=b.id 和join on a.id=b.id 在效率上的区别
  5. android 微信缩小通话界面_安卓如何做出微信那样的界面仿微信“我”的界面2/5...
  6. Redis 快速入门
  7. python 的钻石继承问题
  8. 注释标记的原则_它关系到平台如何标记操纵的媒体。 这是设计师应遵循的12条原则。
  9. React 入门手册
  10. 使用数据增强技术提升模型泛化能力