C++学习笔记25,析构函数总是会宣布virtual
为了永远记住析构函数声明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相关推荐
- 影像组学视频学习笔记(25)-查看准确度、灵敏度、特异度及混淆矩阵、Li‘s have a solution and plan.
本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(25)主要讲解: 通过sklearn包输出准确度.灵敏度.特异度及混淆矩阵 基本概念 代码实现 from sklearn.metrics ...
- C#学习笔记——25个经典问题
1.静态成员和非静态成员的区别? 2.const 和 static readonly 区别? 3.extern 是什么意思? 4.abstract 是什么意思? 5.internal 修饰符起什么作用 ...
- Li‘s 影像组学视频学习笔记(25)-查看准确度、灵敏度、特异度及混淆矩阵
本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(25)主要讲解: 通过sklearn包输出准确度.灵敏度.特异度及混淆矩阵 基本概念 代码实现 from sklearn.metrics ...
- c++学习笔记之析构函数
析构函数的两大功能: (1)释放内存 (2)回光返照 注意析构函数的执行顺序:类似于栈后进先出. 运行本程序可以验证num输出的是后输入学生的学号 #include<string> #in ...
- 学习笔记(25):Python网络编程并发编程-Thread其他属性和守护线程
立即学习:https://edu.csdn.net/course/play/24458/296440?utm_source=blogtoedu 1.Thread其他的属性 CurrentThread( ...
- Spring Boot基础学习笔记25:RabbitMQ - 发布/订阅工作模式
文章目录 零.学习目标 一.准备工作 (一)创建Spring Boot项目 - PublishSubscribeDemo (二)在应用属性文件里配置RabbitMQ 二.基于API进行消息发布和订阅 ...
- 安卓学习笔记25:常用控件 - 下拉列表
文章目录 零.学习目标 一.下拉列表概述 1.继承关系图 2.常用属性和方法 二.教学案例--选择测试科目 (一)运行效果 (二)涉及知识点 (三)实现步骤 1.创建安卓应用[SelectSubjec ...
- 学习笔记25马氏链模型
前段时间担任协会负责人,在搞matlab培训,又报了一堆竞赛.最近几个星期有空学习和记录.上次国赛全国二等奖的目标没达到,拿了个省一等奖,继续努力. 用已有的数据预测下一阶段某状态 只有两个状态 下面 ...
- 罗剑锋透视HTTP协议学习笔记---25 | 固若金汤的根本(下):数字签名与证书
25 | 固若金汤的根本(下):数字签名与证书 黑客虽然拿不到会话密钥,无法破解密文,但可以通过窃听收集到足够多的密文,再尝试着修改.重组后发给网站.因为没有完整性保证,服务器只能"照单全收 ...
最新文章
- java.lang.NoSuchMethodError: org.springframework.core.io.ResourceEditor错误
- 【转】Linux root修改密码失败
- 中小型互联网企业安全建设漫谈。
- 前端面试问题(HTML5+Http+web)
- 编程之美-子数组之和的最大值(二维)方法整理
- python 定义一个插入数据(可以插入到每个表中)通用的方法
- k8s sealos应用安装及应用包制作教程
- MySQL之三范式:原子性 唯一性 避免数据冗余
- celeba数据集_轻松学 Pytorch 使用DCGAN实现数据复制
- 1625 宝石项链 大视野评测
- 关于 SAP UI5 系统测试工具 UIVeri5 的 Chromedriver 版本问题
- 【BZOJ】1649: [Usaco2006 Dec]Cow Roller Coaster(dp)
- 【Day10】项目中如何处理安全问题
- 使用JMH做Java微基准测试(三)测试参数状态State
- Windows下nmap命令及Zenmap工具的使用方法
- 极客时间-算法训练营 3.2
- 做sxy官网的一点经验
- 推荐3个干净、资源多的看剧网站给大家
- 切换电脑计算机名称软件,多电脑切换器
- 【Unity】 结合DoTween制作抛物线效果
热门文章
- [转]hadoop新手错误解决方法
- win7笔记本为手机共享wifi
- 硅谷企業面臨新的反壟斷枷鎖
- ASP.NET MVC+LINQ开发一个图书销售站点(9):编辑目录
- mysql 数据迁移_MySQL海量数据迁移
- numpy T、transpose()函数、swapaxes()函数
- Catalan数(卡特兰数)
- rmi远程代码执行漏洞_【最新漏洞简讯】WebLogic远程代码执行漏洞 (CVE202014645)
- AUTOSAR从入门到精通100讲(四十六)-CANoe工具使用-实现CAN通道的收、发、录、回放报文
- 苹果app商品定价_App Store 即将进行价格调整