Effective C++ 学习笔记(11)
确定基类有虚析构函数
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)相关推荐
- SpringMVC:学习笔记(11)——依赖注入与@Autowired
SpringMVC:学习笔记(11)--依赖注入与@Autowired 使用@Autowired 从Spring2.5开始,它引入了一种全新的依赖注入方式,即通过@Autowired注解.这个注解允许 ...
- Hadoop学习笔记—11.MapReduce中的排序和分组
Hadoop学习笔记-11.MapReduce中的排序和分组 一.写在之前的 1.1 回顾Map阶段四大步骤 首先,我们回顾一下在MapReduce中,排序和分组在哪里被执行: 从上图中可以清楚地看出 ...
- HALCON 20.11:深度学习笔记(11)---目标检测
HALCON 20.11:深度学习笔记(11)---目标检测 HALCON 20.11.0.0中,实现了深度学习方法. 本章讲解了如何使用基于深度学习的对象检测. 通过对象检测,我们希望在图像中找到不 ...
- 台大李宏毅Machine Learning 2017Fall学习笔记 (11)Convolutional Neural Network
台大李宏毅Machine Learning 2017Fall学习笔记 (11)Convolutional Neural Network 本博客主要整理自: http://blog.csdn.net/x ...
- Effective C++ 学习笔记 第七章:模板与泛型编程
第一章见 Effective C++ 学习笔记 第一章:让自己习惯 C++ 第二章见 Effective C++ 学习笔记 第二章:构造.析构.赋值运算 第三章见 Effective C++ 学习笔记 ...
- 华为HCIA-datacom 学习笔记11——AAA原理与配置
华为HCIA-datacom 学习笔记11--AAA原理与配置 AAA原理与配置 1.AAA概述 认证(authentication):验证用户是否获得访问权,确定哪些用户可以访问网络 授权(auth ...
- 点云学习笔记11——VoxelNet算法+代码运行
点云学习笔记11--VoxelNet算法+代码运行 一.算法分析 摘要 介绍 相关工作 1.2. 贡献 2.VoxelNet 2.1.特征学习网络 2.1.1 特征学习网络 二.代码复现 2.1.环境 ...
- 凸优化学习笔记 11:对偶原理 拉格朗日函数
前面讲了凸优化问题的定义,以及一些常见的凸优化问题类型,这一章就要引入著名的拉格朗日函数和对偶问题了.通过对偶问题,我们可以将一些非凸问题转化为凸优化问题,还可以求出原问题的非平凡下界,这对复杂优化问 ...
- Python学习笔记11:函数修饰符
Python学习笔记11:函数修饰符 Python有很多有趣的特性,其中函数修饰符就是一个. 我们在之前的那个web应用示例中用过如下写法: @web.route('/log') @符号后边的,就是一 ...
- MIPS汇编语言学习笔记11:整数减法 (mult方法)
任务:整数相乘,并输出打印. 代码: .dataintA: .word 5intB: .word 2 .textli $v0, 1lw $a1, intAlw $a2, intBmult $a1, $ ...
最新文章
- 设置PLSQ 连接oracle数据库
- 没有日志,只有MDF文件如何恢复数据库(转)[
- MC34063组成DC-DC电路
- HDU1846 - Brave Game【巴什博弈】
- 中如何将方形图片转换成圆形图片_【PS】PS中不可不知的实用技巧!你都掌握了吗?...
- 缓存学习中未命中的缓存情况的处理
- 集合类 List 的那些坑
- Git学习笔记(四)
- Redis 真得那么好用吗?
- vc 可用的正则表达式库
- python bytes_Python每天必学之bytes字节
- webform CustomValidator
- c# winform Get请求接口
- winrar 注册码
- 三角网导线平差实例_附合导线平差步骤
- 春季校园招聘简历投递量已超去年同期;亚太房地产市场现逢低买入良机 | 美通企业日报...
- swf游戏保存进度_手机玩swf游戏你需要知道的冷知识
- windows易升_直播用“易升”工具升级至Windows10 2020年5月更新
- 微软MSDN Web cast系列视频教程集锦
- [项目记录]用vue-electron搭建pc网易云音乐程序(2)——搭建基本页面
热门文章
- Win10技巧:16个系统优化设置小技巧,大幅度提升你的电脑性能!
- 程序人生:提高代码运行效率的9个技巧
- 数据优化:求求你别再用offset和limit分页了
- php join a.id b.id,mysql求助 请问where a.id=b.id 和join on a.id=b.id 在效率上的区别
- android 微信缩小通话界面_安卓如何做出微信那样的界面仿微信“我”的界面2/5...
- Redis 快速入门
- python 的钻石继承问题
- 注释标记的原则_它关系到平台如何标记操纵的媒体。 这是设计师应遵循的12条原则。
- React 入门手册
- 使用数据增强技术提升模型泛化能力