为了永远记住析构函数声明virtual----><<effective c++>>

为这句话不一定对,但无需质疑的是这句话是非常实用的.

查看以下的样例:

#include <iostream>
#include <string>
using namespace std;
class B{
public:~B(){cout<<"base is destroyed!"<<endl;}
};
class D:public B{
public:~D(){cout<<"dirved is destroyed!"<<endl;}};int main(){{D d;}
}

这个是一个非常easy的样例,输出是肯定的.

可是,再看以下的測试!

#include <iostream>
#include <string>
using namespace std;
class B{
public:~B(){cout<<"base is destroyed!"<<endl;}
};
class D:public B{
public:~D(){cout<<"dirved is destroyed!"<<endl;}};int main(){{B *b=new D();delete b;}
}

因此能够看到,当用一个基类的指针指向一个派生类的对象,直接删除该指针时,析构函数调用链将会遭到破坏.

#include <iostream>
#include <string>
using namespace std;
class B{
public:virtual ~B(){cout<<"base is destroyed!"<<endl;}
};
class D:public B{
public:virtual ~D(){cout<<"dirved is destroyed!"<<endl;}};int main(){{B *b=new D();delete b;}
}

因此应该记得将析构函数声明为virtual,这样就永远不用操心析构函数调用链的破坏!

版权声明:本文博主原创文章,博客,未经同意不得转载。

转载于:https://www.cnblogs.com/zfyouxi/p/4843521.html

C++学习笔记25,析构函数总是会宣布virtual相关推荐

  1. 影像组学视频学习笔记(25)-查看准确度、灵敏度、特异度及混淆矩阵、Li‘s have a solution and plan.

    本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(25)主要讲解: 通过sklearn包输出准确度.灵敏度.特异度及混淆矩阵 基本概念 代码实现 from sklearn.metrics ...

  2. C#学习笔记——25个经典问题

    1.静态成员和非静态成员的区别? 2.const 和 static readonly 区别? 3.extern 是什么意思? 4.abstract 是什么意思? 5.internal 修饰符起什么作用 ...

  3. Li‘s 影像组学视频学习笔记(25)-查看准确度、灵敏度、特异度及混淆矩阵

    本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(25)主要讲解: 通过sklearn包输出准确度.灵敏度.特异度及混淆矩阵 基本概念 代码实现 from sklearn.metrics ...

  4. c++学习笔记之析构函数

    析构函数的两大功能: (1)释放内存 (2)回光返照 注意析构函数的执行顺序:类似于栈后进先出. 运行本程序可以验证num输出的是后输入学生的学号 #include<string> #in ...

  5. 学习笔记(25):Python网络编程并发编程-Thread其他属性和守护线程

    立即学习:https://edu.csdn.net/course/play/24458/296440?utm_source=blogtoedu 1.Thread其他的属性 CurrentThread( ...

  6. Spring Boot基础学习笔记25:RabbitMQ - 发布/订阅工作模式

    文章目录 零.学习目标 一.准备工作 (一)创建Spring Boot项目 - PublishSubscribeDemo (二)在应用属性文件里配置RabbitMQ 二.基于API进行消息发布和订阅 ...

  7. 安卓学习笔记25:常用控件 - 下拉列表

    文章目录 零.学习目标 一.下拉列表概述 1.继承关系图 2.常用属性和方法 二.教学案例--选择测试科目 (一)运行效果 (二)涉及知识点 (三)实现步骤 1.创建安卓应用[SelectSubjec ...

  8. 学习笔记25马氏链模型

    前段时间担任协会负责人,在搞matlab培训,又报了一堆竞赛.最近几个星期有空学习和记录.上次国赛全国二等奖的目标没达到,拿了个省一等奖,继续努力. 用已有的数据预测下一阶段某状态 只有两个状态 下面 ...

  9. 罗剑锋透视HTTP协议学习笔记---25 | 固若金汤的根本(下):数字签名与证书

    25 | 固若金汤的根本(下):数字签名与证书 黑客虽然拿不到会话密钥,无法破解密文,但可以通过窃听收集到足够多的密文,再尝试着修改.重组后发给网站.因为没有完整性保证,服务器只能"照单全收 ...

最新文章

  1. java.lang.NoSuchMethodError: org.springframework.core.io.ResourceEditor错误
  2. 【转】Linux root修改密码失败
  3. 中小型互联网企业安全建设漫谈。
  4. 前端面试问题(HTML5+Http+web)
  5. 编程之美-子数组之和的最大值(二维)方法整理
  6. python 定义一个插入数据(可以插入到每个表中)通用的方法
  7. k8s sealos应用安装及应用包制作教程
  8. MySQL之三范式:原子性 唯一性 避免数据冗余
  9. celeba数据集_轻松学 Pytorch 使用DCGAN实现数据复制
  10. 1625 宝石项链 大视野评测
  11. 关于 SAP UI5 系统测试工具 UIVeri5 的 Chromedriver 版本问题
  12. 【BZOJ】1649: [Usaco2006 Dec]Cow Roller Coaster(dp)
  13. 【Day10】项目中如何处理安全问题
  14. 使用JMH做Java微基准测试(三)测试参数状态State
  15. Windows下nmap命令及Zenmap工具的使用方法
  16. 极客时间-算法训练营 3.2
  17. 做sxy官网的一点经验
  18. 推荐3个干净、资源多的看剧网站给大家
  19. 切换电脑计算机名称软件,多电脑切换器
  20. 【Unity】 结合DoTween制作抛物线效果

热门文章

  1. [转]hadoop新手错误解决方法
  2. win7笔记本为手机共享wifi
  3. 硅谷企業面臨新的反壟斷枷鎖
  4. ASP.NET MVC+LINQ开发一个图书销售站点(9):编辑目录
  5. mysql 数据迁移_MySQL海量数据迁移
  6. numpy T、transpose()函数、swapaxes()函数
  7. Catalan数(卡特兰数)
  8. rmi远程代码执行漏洞_【最新漏洞简讯】WebLogic远程代码执行漏洞 (CVE202014645)
  9. AUTOSAR从入门到精通100讲(四十六)-CANoe工具使用-实现CAN通道的收、发、录、回放报文
  10. 苹果app商品定价_App Store 即将进行价格调整