effective cpp 读书笔记2

2023-05-16

当你用到多态时,务必把析构函数做成虚函数

以前知道子类的析构函数会自动调用父类的析构函数,然而今天却发现不总是这样。当你用基类的指针指向派生类时,然后delete这个指针时,有可能就不会调用派生类的析构函数。看代码

#include <stdio.h>
class A{
public:
     ~A(){
        printf("A deconstructor\n");
    }
};
class B:public A{
    ~B(){
        printf("B deconstructor\n");
    }
};
int main()
{
    A *p = new B;
    delete p;
    return 0;
}

这段代码的输出是“A deconstructor ”。它并没有调用派生类的析构函数。这是非常危险的事,资源泄露由此产生。

正确的做法是,将析构函数做成虚函数

#include <stdio.h>
class A{
public:
    virtual ~A(){
        printf("A deconstructor\n");
    }
};
class B:public A{
    ~B(){
        printf("B deconstructor\n");
    }
};
int main()
{
    A *p = new B;
    delete p;
    return 0;
}

这段代码的输出是

B deconstructor
A deconstructor

正确的调用了两个类的析构函数,注意,请注意析构函数的调用顺序。这个调用顺序是一个考点,当然也请思考为什么是这个顺序

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

effective cpp 读书笔记2 的相关文章

  • 《乌合之众》读书笔记

    作者 法 古斯塔夫 勒庞 译者 马晓佳 背景 法国大革命 导言 群体的时代 真正的历史变革 并不是那些以宏伟和暴力的场景令我们震惊的事情 能够令文化实现伟大复兴的唯一重要的变化 是对思想 观念和信仰产生影响的变化 令人印象深刻的历史事件只不
  • 软件测试的艺术(2)代码走查,检查与评审

    人工测试 代码检查 走查以及可用性测试是三种主要的人工测试方法 这种人工测试方法有点像是若干个人员坐在一起开 头脑风暴会 也就是说 目的是为了找出错误 而不是调试 优点 1 一旦发现错误 就能在代码中对其进行精准的定位 降低了调试的成本 2
  • 【读书笔记】5G与车联网

    5G与车联网 by 李俨 曹一卿 陈书平等人 Quanlcomm Technologies Inc 车联网背景 2015年 麻省理工科技评论 将车车通信评为年度十大突破技术之一 V2V V2X比无人驾驶更容易实现 V2V V2X提供一种超视
  • 工作日志【 SQL内部规范-ETL银行项目 】

    工作日志 SQL内部规范 ETL银行项目 一 表结构设计 建表时 首先要确定表的业务唯一键 即该表的唯一索引由哪些字段构成 不建议创建没有唯一索引的表 如果要修改表的唯一索引 一定要严格评审 前台 表结构变更 F层的表需要通知JAVA开发
  • LeetCode 101Pro

    LeetCode 101 本文档是对LeetCode101中题目的详细解释和扩展 文章目录 LeetCode 101 第一章 题目分类 第二章 最易懂的贪心算法 2 1 算法解释 2 2 分配问题 455 分发饼干 135 分发糖果 2 3
  • Java for Web学习笔记(五九):Controller替代Servlet(1)请求匹配

    URL匹配 书写方式 是对DispatcherServlet所匹配的URL进行二次匹配 本例DispatcherServelt的servlet mapping中
  • 【读书笔记】Linux高性能服务器编程(第二篇 第五章)

    第五章 Linux网络编程基础API 5 1 socket地址API 5 1 1 主机字节序和网络字节序 字节序分为 1 大端字节序 一个整数的高位字节 23 31 bit 存储在内存的低地址处 低位字节 0 7 bit 存储在内存的高地址
  • Kafka权威指南

    第一章 初识Kafka kafka是一款发布订阅的消息系统 具体结构从大向下可以列举为 1个Kafka集群种有N个broker 一个broker有N个主题分区 broker指的是一个独立的Kafka服务器 主题指的是消息的分类 为什么要选用
  • 《Java 并发编程实战》--读书笔记

    Java 并发编程实战 注 极客时间 Java 并发编程实战 读书笔记 GitHub https github com ByrsH Reading notes blob master Concurrency Java并发编程实战 极客时间
  • wireshark数据包分析实战 读书笔记

    由头 永久链接 之前读了很多书籍 但是现在回顾的时候 很多内容仅仅是熟悉 而不是真正掌握 所以尝试一种新的方式 将读书时觉得比较重要的 或者是自己还不理解的东西记录下来 达到这本书我已经不需要再去翻 只要看笔记即可的效果 第一章 数据包分析
  • extern C 在c/c++中的使用

    http blog csdn net jscese article details 37821961 1 问题定义 在研究操作系统源代码或者在嵌入式系统中编写程序时 经常会发现下面这种用法 cpp view plain copy print
  • 读书笔记 摘自:《思维导图攻略:快速上手与落地实践》

    思维导图攻略 快速上手与落地实践 王健文 出版 2019 01 01 7 3万字 内容提要 无落地 不导图 思维导图的学习并不在于思维导图的绘制本身 而是在于实际应用和思维提升 第一章 精英人士自我提升的思维利器 第一节 提升大脑学习力的秘
  • 2022.04.11【读书笔记】

    文章目录 摘要 研究意义 转录组学意义 技术比较 研究方法 细胞筛选 文库构建 测序 实验方法 实验流程 常见问题 分析内容 重点 分析内容总览 细胞亚群分类 细胞类型频率统计 Marker基因分析 富集分析 样本差异分析 逆时分析 WGC
  • 数仓相关知识点/笔记(OLTP和OLAP)

    现在实时数仓是一个非常火的趋势 最近开始逐渐了解一些数仓相关的东西 从基础的理论知识包括架构 算一个基础总结和学习记录吧 包括OLTP和OLAP 基础表和数据湖相关概念 不定期补充更新 联机事务处理OLTP和联机分析处理OLAP 关键词 日
  • 达芬奇传

    列奥纳多 迪 皮耶罗 达 芬奇 出生于1452年 1519年逝世 享年67岁 画家 发明家 科学家 生物学家 工程师 达 芬奇的意思是 来自芬奇镇 他的名字叫做列奥纳多 达 芬奇的父亲叫瑟 皮耶罗 达 芬奇 是佛罗伦萨的法律公证员 因此十分
  • Lua和C++交互总结(很详细)

    出处 http blog csdn net shun fzll article details 39120965 一 lua堆栈 要理解lua和c 交互 首先要理解lua堆栈 简单来说 Lua和C c 语言通信的主要方法是一个无处不在的虚拟
  • 【读书笔记】-《工业互联网-技术与实践》

    前言 现在的技术发展潮流 基本上往大数据 人工智能的方向发展 但是归根结底 是什么推动了这些技术产业的发展 是什么支撑的 主要说的话 这和互联网的发展息息相关 也就是说现在一些主要的发达国家是如何拓展先技术新领域 并且如何把这些新技术应用到
  • 汇编语言(第三版)读书笔记 2 - 第2章 寄存器

    第2章 寄存器 前一章所说的总线 相对于CPU内部来说是外部总线 内部总线实现了CPU内部各个器件 运算器 控制器 寄存器 之间的联系 外部总线实现了CPU和主板上其他器件的联系 不同的CPU 寄存器的个数 结构是不相同的 8086 CPU
  • 读《洞穴奇案》——一个人是否应该为了避免偷窃面包而挨饿致死?

    之前在功利主义与法的精神一文中提到过正当防卫 在读了今天的内容后 我觉得有必要对正当防卫的内在精神做一个深入探讨 书中说到判断是否是正当防卫 需要去判断一个人在进行自我防卫的时候是否是故意的 我认为 对这个故意的解读 是判断正当防卫的关键
  • 编译报错问题汇总

    1 error undefined reference to dlsym solution target link libraries target lpthread ldl https www cnblogs com midnightca

随机推荐

  • you-get的安装与使用

    youget简介 you get是github上python的一个开源库 https github com soimort you get xff0c 使用you get你只需要取得视频所在网页链接地址就可以很轻松的下载下来 xff0c 目
  • VS Code搭建PYQT5环境并创建Helloworld实例

    使用Python pip安装PyQt5和PyQt5 tool pip install PyQt5 pip install PyQt5 tools 在VS code中安装插件PYQT Integration 配置PYQT Integratio
  • ubuntu Xrdp远程连接Authentication is required to create a color managed device

    问题 Gnome Bug xff1a 无法点击 永不消逝的授权对话框 解决 xff1a https blog csdn net wu weijie article details 108481456
  • Linux运维入门~21.系统磁盘管理,解决u盘连接电脑无反应,解决卸载u盘正忙问题

    本节我们来了解一下linux系统的磁盘管理 识别设备常用命令有 xff1a fdisk l 查看真实存在的设备 cat proc partition 系统识别的设备 blkid 系统可使用的设备 df 系统正在挂载的设备 du 查看磁盘容量
  • 快速幂取模:求 a^b % N(C++)

    在某些情况下 xff0c 我们需要求模 N 情况下某个数的多次幂 xff0c 例如 xff1a 求多次幂结果的最后几位数 RSA算法的加解密 如果底数或者指数很大 xff0c 直接求幂再取模很容易会出现数据溢出的情况 xff0c 产生错误的
  • 新手教程:手把手教你使用Powershell批量修改文件名

    适合完全没用过 xff0c 没了解过powershell的人 1 打开Windows Powershell ISE 在任务栏搜索框中输入ISE xff0c 然后打开 xff08 我的任务栏放在右边了 xff0c 所以是这个样子 xff09
  • Mac OS 开机密码重置

    通过 Mac OS 恢复功能启动 Apple 芯片 xff1a 将 Mac 开机并继续按住电源按钮 xff0c 直至看到启动选项窗口 选择标有 选项 字样的齿轮图标 xff0c 然后点按 继续 Intel 处理器 xff1a 将 Mac 开
  • 表达式求值:从“加减”到“带括号的加减乘除”的实践过程

    本文乃Siliphen原创 xff0c 转载请注明出处 xff1a http blog csdn net stevenkylelee 为什么想做一个表达式求值的程序 最近有一个需求 xff0c 策划想设置游戏关卡的某些数值 xff0c 这个
  • Linux中source命令,在Android build 中的应用

    source命令 xff1a source命令也称为 点命令 xff0c 也就是一个点符号 xff08 xff09 source命令通常用于重新执行刚修改的初始化文件 xff0c 使之立即生效 xff0c 而不必注销并重新登录 用法 xff
  • Edge 错误代码: STATUS_ACCESS_DENIED 解决方案

    1 到C盘Edge的文件全部删掉 2 到电脑管家的软件管理重新下载Edge 或者 去官网下载 3 再次打开Edge xff0c 功能都回来了 注 xff1a 该解决方案源自于edge吧的四川男篮大佬
  • centos7.9离线安装mysql5.7

    前言 windows server2003服务器 xff0c 安装mysql提示需要net framework xff0c 费了半天劲装好了 xff0c 发现解压版redis无法启动 xff0c 换了个低版本也是无法安装 xff0c 服务器
  • vs2019-slicer编译问题记录

    3D Slicer编译过程问题记录 官网教程 xff1a https slicer readthedocs io en latest developer guide build instructions windows html 环境 CM
  • sudo npm command not found 问题解决

    这种情况通常是使用 npm 命令可以正常使用 xff0c 但使用sudo npm 命令便会报 command not found 这是什么原因呢 xff1f 输入which npm可以得到 usr local bin npm xff0c 这
  • (POJ1201)Intervals <差分约束系统-区间约束>

    Intervals Description You are given n closed integer intervals ai bi and n integers c1 cn Write a program that reads the
  • 【sv与c】sv与c交互

    网上此类文章很多 xff0c 这里暂时不放具体实现和测试结果 xff0c 后续持续更新 下面引用一些帖子 xff0c 帖子中涉及到具体做法 vcs联合编译v sv c 43 43 代码 sxlwzl的专栏 CSDN博客 1 xff0c 假设
  • stm32f103c8t6最小系统

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 前言stm32f103c8t6构成二 xff1a 电源电路稳压模块注意 复位电路NRST 时钟电路程序下载电路JTAGSWD 启
  • udp中的connect()&bind()

    connect amp bind 的作用 udp udp connect span class hljs preprocessor include lt sys types h gt span span class hljs preproc
  • Linux Hook技术实践

    LInux Hook技术实践 什么是hook 简单的说就是别人本来是执行libA so里面的函数的 xff0c 结果现在被偷偷换成了执行你的libB so里面的代码 xff0c 是一种替换 为什么hook 恶意代码注入调用常用库函数时打lo
  • Tensorflow Cnn mnist 的一些细节

    Tensorflow cnn MNIST 笔记 写这个完全是记录看官网example时不懂 xff0c 但后来弄懂的一些细节 当然这个可以算是对官方文档的补充 xff0c 也许每个人遇到的不懂都不一样 xff0c 但希望对大家有帮助 先上代
  • effective cpp 读书笔记2

    当你用到多态时 xff0c 务必把析构函数做成虚函数 以前知道子类的析构函数会自动调用父类的析构函数 xff0c 然而今天却发现不总是这样 当你用基类的指针指向派生类时 xff0c 然后delete这个指针时 xff0c 有可能就不会调用派