经典问题解析四

关于动态内存分配

new 和 malloc 的区别是什么?

delete 和 free 的区别是什么?

new 关键字与 malloc 函数的区别

new 关键字是 C++ 的一部分

malloc 是由 C 库函数提供的函数

new 是以具体类型为单位进行内存分配

malloc 以字节为单位进行内存分配

new 在申请内存空间时可进行初始化

malloc 仅根据需要申请定量的内存空间

下面的代码输出什么?为什么?

new 和 malloc 的区别

new 在 所有 C++ 编译器中都被支持

malloc 在某些系统开发中不能调用

new 能够触发构造函数的调用

malloc 仅分配需要的内存空间

对象的创建只能使用 new

malloc 不适合面向对象开发

下面的代码输出什么?为什么?

delete 和 free 的区别

delete 在所有 C++ 编译器中都被支持

free 在某些系统开发中不能调用

delete 能够触发析构函数的调用

free 仅归还之前分配的内存空间

对象的销毁只能使用 delete 

free 不适合面向对象开发

问题

构造函数是否可以成为虚函数?

析构函数是否可以成为虚函数?

构造函数不可能成为虚函数

  • 在构造函数执行结束后,虚函数表指针才会被正确的初始化

析构函数可以成为虚函数

  • 建议在设计类时将析构函数声明为虚函数

问题

构造函数中是否可以发生多态?

析构函数中是否可以发生多态?

构造函数中不可能发生多态行为

  • 在构造函数执行时,虚函数表指针未被正确初始化

析构函数中不可能发生多态行为

  • 在析构函数执行时,虚函数表指针已经被销毁

构造函数和析构函数不能发生多态行为,只调用当前类中定义的版本!!

问题

继承中如何正确的使用强制类型转换?

dynamic_cast 是与继承相关的类型转换关键字

dynamic_cast 要求相关的类中必须有虚函数

用于有直接或间接继承关系的指针 (引用) 之间

  • 指针:
    • 转换成功:得到目标类型的指针
    • 转换失败:得到一个空指针
  • 引用:
    • 转换成功:得到目标类型的引用
    • 转换失败:得到一个异常操作信息

编译器会检查 dynamic_cast 的使用是否正确

类型转换的结果只可能在运行阶段才能得到

小结

new / delete 会触发构造函数或者析构函数的调用

构造函数不能成为虚函数

析构函数可以成为虚函数

构造函数和析构函数中都无法产生多态行为

dynamic_cast 是与继承相关的专用转换关键字

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/96200.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

利用R作圆环条形图

从理念上看,本质就是增加了圆环弧度的条形图。如上图2。 需要以下步骤: 数据处理,将EXCEL中的数据做成3*N的表格导入系统,代码如下:library(tidyverse) library(stringr)library(ggplot2)library(viridis) stuper &…

【前车之鉴】: 2023最新教程-将java程序打包到maven私服的正确打开方式,详细流程介绍不怕你掌握不了

文章目录 为什么看这篇整体流程1. 注册账号【首次需要】2. 工单申请【新项目必须】3. 项目配置【新项目必须】4. 授权认证【新项目必须】5. 一键发布 最后也很重要 为什么看这篇 一是当前网络上一些博客有遗漏部分,这里做补充,二是网上思路没错&#xff…

DC/DC开关电源学习笔记(一)开关电源技术概述

(一)开关电源技术概述 1.什么是开关电源?2.开关电源技术概述2.1 小型化、薄型化、轻量化、高频化2.2 高可靠性2.3 低噪声2.4 采用计算机辅助设计和控制 1.什么是开关电源? 开关模式电源(Switch Mode Power Supply&…

JVM解密: 解构类加载与GC垃圾回收机制

文章目录 一. JVM内存划分二. 类加载机制1. 类加载过程2. 双亲委派模型 三. GC垃圾回收机制1. 找到需要回收的内存1.1 哪些内存需要回收?1.2 基于引用计数找垃圾(Java不采取该方案)1.3 基于可达性分析找垃圾(Java采取方案) 2. 垃圾回收算法2.1 标记-清除算法2.2 标记…

【QT】信号和槽(15)

前面的内容说了很多不同的控件如何使用,今天来看下QT的核心,信号与槽(Signals and slots)! 简单理解一下,就是我们的信号与槽连接上了之后,发射一个信号给到槽,槽函数接收到了这个信…

0103水平分片-jdbc-shardingsphere-中间件

文章目录 1 准备服务器1.1 创建server-order0容器1.2 创建server-order1容器 2、基本水平分片2.1、基本配置2.2、数据源配置2.3、标椎分片表配置2.4、行表达式2.5、分片算法配置2.6、分布式序列算法 3、多表关联3.1、创建关联表3.2、创建实体类3.3、创建Mapper3.4、配置关联表3…

Linux 桌面上的 Firefox 面临着大问题

导读毫无疑问,无论是在桌面、笔记本电脑还是移动设备上,浏览器都是任何操作系统中最重要的应用之一。 如果没有一个功能强大、快速且稳定的浏览器,操作系统的实用性将大幅度降低,以至于我相当确定,如果一个操作系统没有…

哈佛商学院教授:每个老板使用ChatGPT之类AI工具的理由

哈佛商学院教授Karim Lakhani表示,每个老板都应该使用生成式人工智能工具,生成式AI为老板提供了一种更高效的工作方式,在提高生产力、提高规模、与客户沟通以及促进销售、社交媒体内容更新和新产品开发等方面都有积极意义。 Karim Lakhani表…

Vulnhub系列靶机---JIS-CTF-VulnUpload-CTF01靶机

文章目录 1、网卡配置2、信息收集主机发现端口扫描目录扫描 3、漏洞探测4、漏洞利用一句话木马蚁剑 GetShellSSH连接提权 JIS文档说明 JIS-CTF-VulnUpload-CTF01靶机下载地址 该靶机有5个flag 1、网卡配置 开启靶机,看见加载的进度条按shift,看到如下界…

大数据扫盲(2): 数据分析BI与ETL的紧密关系——ETL是成功BI的先决条件

着业务的发展每个企业都将产生越来越多的数据,然后这些数据本身并不能直接带来洞察力并产生业务价值。为了释放数据的潜力,数据分析BI(商业智能)成为了现代企业不可或缺的一部分。然而,在数据分析的背后,有…

SQLmap使用

文章目录 利用sqlmap 注入得到cms网站后台管理员账密获取数据库名称获取cms数据库的表名获取users表中的字段(内容)获取username字段和password字段的内容 salmap破解psot请求数据包salmap获取getshell 利用sqlmap 注入得到cms网站后台管理员账密 获取数…

关闭jenkins插件提醒信息

jenkins提醒信息和安全警告可以帮助我们了解插件或者jenkins的更新情况,但是有些插件是已经不维护了,提醒却一直存在,看着糟心,就像下面的提示 1、关闭插件提醒 找到如下位置:系统管理-系统配置-管理监控配置 打开管…

Error running ‘Tomcat 8.5.29‘ Address localhost:1099 is already in use

一、Error running ‘Tomcat 8.5.29’ Address localhost:1099 is already in use 原因:端口1099被占用了。 二、解决 2.1 解决方法一-结束该端口1099占用 //1-查看端口占用,根据端口号1099,获取PID(进程ID) netstat -ano | findstr "…

Plugin “Chinese (Simplified) Language Pack / 中文语言包“ was not installed

idea2020.3.4版本无法直接在下载汉化包 1、通常情况下,直接在idea里面下载插件即可,这里下载失败后进行下一步操作: 2、https://plugins.jetbrains.com/plugin/13710-chinese-simplified-language-pack----/versions 第一步:找到…

在iPhone 15发布之前,iPhone在智能手机出货量上占据主导地位,这对安卓来说是个坏消息

可以说这是一记重拳,但似乎没有一个有价值的竞争者能与苹果今年迄今为止的智能手机出货量相媲美。 事实上,根据Omdia智能手机型号市场跟踪机构收集的数据,苹果的iPhone占据了前四名。位居榜首的是iPhone 14 Pro Max,2023年上半年…

4G智慧电力物联网:建设高效智能,引领电力行业革新!

随着4G与物联网技术的快速发展为电力行业提供了更高效、可靠、智能化的解决方案。本文中智联物联将为大家分享智慧电力系统中的一些关键的物联网技术和通讯设备,如工业4G路由器、分布式发电站、数据采集传输、远程监控管理以及变电站监测。 光伏发电站是电力行业中重…

<AMBA总线篇> AXI总线协议介绍

目录 01 AXI协议简介 AXI协议特性 AXI协议传输特性 02 AXI协议架构 AXI协议架构 write transaction(写传输) read tramsaction(读传输) Interface and interconnect 典型的AXI系统拓扑 03 文章总结 大家好,这里是程序员杰克。一名平平无奇的嵌入式软件工程…

大数据之linux入门

一、linux是什么 linux操作系统 开发者是林纳斯-托瓦兹,出于个人爱好编写。linux是一个基于posix和unix的多用户、多任务、支持多线程和多CPU的操作系统。 Unix是20世纪70年代初出现的一个操作系统,除了作为网络操作系统之外,还可以作为单…

安防视频监控/视频集中存储/云存储平台EasyCVR平台无法播放HLS协议该如何解决?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强,视频能力丰富,具体可实现视频监控直播、视频轮播、视频录像、…

Web开发模式、API接口、restful规范、序列化和反序列化、drf安装和快速使用、路由转换器(复习)

一 Web开发模式 1. 前后端混合开发模式 前后端混合开发模式是一种开发方式,将前端和后端的开发工作结合在一起,以加快项目的开发速度和 提高协作效率。这种模式通常用于快速原型开发、小型项目或敏捷开发中。在前后端混合开发模式中,前端和…