2024.9.26C++作业

news2024/9/29 18:30:15

1. 什么是虚函数,什么是纯虚函数?

1.虚函数在基类中声明,使用virtual关键字修饰成员函数,并且允许在派生类中重写。
2.在运行时,允许基类指针或者引用调用这个函数时,根据实际对象类型调用派生类,实现动态绑定,实现多态性。
3.纯虚函数是没有在基类中实现的函数,只声明,不实现,无法直接实例化,必须在派生类中提供具体的实现。
4.编译器维持一张表支持虚函数,记录每个对象所对应的虚函数实现,在运行时提供函数调用。


2. 基类为什么需要虚析构函数?
在多态过程中,如果基类指针要删除一个派生类对象,如果没有定义虚析构函数,那么只会调用基类的析构函数,派生类的虚构函数不会被调用,可能造成内存泄漏,

3. 如何初始化 const 和 static 数据成员?
1.const成员必须通过构造函数的初始化列表进行初始化,不能在构造函数内赋值。
2.static成员变量属于一个类,而不是某个对象,因此必须在类外进行初始化。

4. 引用和指针的区别
1.引用使用&,指针使用*
2.指针储存的是对象地址,访问时通过解引用访问实际值,引用是对象别名,在编译时替换成对象本身。
3.引用必须在声明时进行初始化,而指针可以在声明后稍后赋值。
4.引用不可以被重新赋值,指针可以指向不同的对象。
5.指针可以指向nullptr为空,引用必须使用指向合法对象。
6.指针占用内存,引用不占用。
7.指针可以有多级指针,引用只有一级。
8.引用多用于参数传递减少拷贝开销,指针用于动态内存管理和可能为nullptr的对象。

5. new 和 malloc 的区别
1.malloc是c标准库函数,用于分配指定字节空间,返回void*指针指向该空间。new是c++y运算符,直接返回所需类型指针,避免了强制转换。
2.new在调用时会调用构造函数初始化对象,而malloc不会。
3.new分配失败抛出异常,malloc返回值为NULL
4.new分配的内存需要使用delete释放,调用析构函数。malloc使用free释放。
6.new适用于c++对象创建,而malloc适用于手动管理对象数据。

6. 内存泄漏是怎么产生的,如何避免
内存泄漏是程序动态分配的内存未即使释放,导致内存无法再次使用和时候导致的。
避免方法:使用析构函数进行释放。手动追踪内存的分配和释放。

7. C++ 的内存分区
1.栈区:储存局部变量和函数调用相关栈帧。
2.堆区:用于动态内存分配,需要手动释放。
3.全局/静态区:储存全局变量和静态变量,程序启动时分配,结束时释放。
4.常量区:如字符串常量。
5.代码区:存放可执行代码。

8. 设计模式及应用场景
1.单例模式:确保一个类只有一个实例,提供全局访问,比如数据库的连接池管理。
2.工厂模式:用于创建对象的封装,适用于对象创建逻辑复杂且需要根据输入类型创建不同对象的场景。

9. 常用的数据结构及时间、空间复杂度
1.数组,访问(O1),插入删除(On)
2.链表,访问(On),插入删除(O1)
3.栈,基于数组或者链表实现,出入栈时间复杂度为(O1)
4.队列,基于数组或者链表实现,出入队列的时间复杂度为(O1)
5.哈希表:查找,插入,删除的时间复杂度为(O1)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安卓主板_MTK4G/5G音视频记录仪整机及方案定制

音视频记录仪方案,采用联发科MT6877平台八核2* A78 6* A55主频高达2.4GHz, 具有高能低耗特性,搭载Android 12.0智能操作系统,可选4GB32GB/6GB128GB内存,运行流畅。主板集成NFC、双摄像头、防抖以及多种无线数据连接,支…

YOLOv8改进,YOLOv8改进损失函数采用Powerful-IoU(2024年最新IOU),助力涨点

摘要 边界框回归(BBR)是目标检测中的核心任务之一,BBR损失函数显著影响其性能。然而,观察到现有基于IoU的损失函数存在不合理的惩罚因子,导致回归过程中锚框扩展,并显著减缓收敛速度。为了解决这个问题,深入分析了锚框扩展的原因。针对这个问题,提出了一种新的Powerfu…

【C++】类和对象<上>(类的定义,类域,实例化,this指针)

目录 一. 类的定义 【对比c】结构体和类的区别 1. 称呼:变量 or 对象? 2. 类型: 3. 访问限定: 4. c和c结构体使用 5. 相同点: 二. 类域 三. 实例化 1. 1对N 2. 计算大小只考虑成员变量 3. 到此一游 四. …

【深度学习】04-Cnn卷积神经网络-01- 卷积神经网络概述/卷积层/池化层/分类案例精讲

卷积神经网络(CNN,Convolutional Neural Network)是专门用于处理图像数据的神经网络。 图像的基本概念 图像其实是数组: ndarray -> [高,宽,3通道] --> uint8 每个值取值范围0-255,那么…

高空抛物AI检测算法:精准防控,技术革新守护城市安全

近年来,随着城市化进程的加速,高楼大厦如雨后春笋般涌现,但随之而来的高空抛物问题却成为城市管理的一大难题。高空抛物不仅严重威胁行人的安全,还可能引发法律纠纷和社会问题。为了有效预防和减少高空抛物事件的发生,…

pnpm依赖安装失败解决|pnpm项目从一个文件夹复制到另一个文件夹运行失败问题解决-以vbenAdmin项目为例

1 前言 最近在使用vben admin项目迁移时,从一个文件夹复制到另一个文件夹运行不起来,排查了一天,终于把问题排查出来了,特地记录一下,便于自己看也便于大家看。 使用项目安装包版本: v2.11.5 https://gi…

【产教融合】新媒体产业园携手高校,共育数字创意人才

在新媒体浪潮的推动下,数字创意产业正以前所未有的速度蓬勃发展。为了应对这一趋势,新媒体产业园积极响应“产教融合”的号召,携手国内多所顶尖高校,共同开启数字创意人才培养的新篇章。 树莓集团一直以来都在新媒体领域有着卓越的…

uni-app如果自定义tabbar实现底部样式有凸起效果,背景带圆角

想要实现的效果、 大部分可以参考这一篇文章 小程序弹出框是没办法遮挡住底部的tabbar的&#xff0c;解决的办法是使用自定义tabbar。。uni-app小程序如何自定义tabbar-CSDN博客 我们只要改下index.wxml和index. wxs的代码就行了 <view class"tab-bar"><b…

stm32 bootloader跳转程序设计

文章目录 1、bootloader跳转程序设计&#xff08;1&#xff09;跳转程序&#xff08;2&#xff09;、app程序中需要注意<1>、在keil中ROM起始地址和分配的空间大小<2>、在system_stm32f4xx.c中设置VECT_TAB_OFFSET为需要偏移的地址<3>、main函数中使能中断 总…

浅析 Keil 中的 sct 文件

目录 一、程序的存储与运行1、存储2、加载、运行 二、sct 分散加载文件1、简介2、文件格式2.1 加载域2.2 执行域2.3 输入节区描述 3、配置 sct 文件 一、程序的存储与运行 1、存储 程序编译后&#xff0c;应用程序中所有具有同一性质的数据(包括代码)被归到一个域&#xff0c…

Java必修课——Spring框架

目录 一、Spring框架概述二、IOC概念和原理2.1、什么是IOC2.2、IOC接口 三、深入理解Java基础中的集合框架3.1、Collection3.2、Map3.3、集合工具类 四、练习写一个SpringMVC框架1、介绍2、程序实践3、总结 五、Java开发者必备10大数据工具和框架 一、Spring框架概述 Spring是…

从追随者到领跑者:suker书客如何粉碎技术障碍,成就行业传奇

护眼灯从小众需求逐渐走向了大众消费&#xff0c;一度引来许多品牌的相继入场&#xff0c;以吸顶灯、吊灯、台灯和落地灯等各大护眼品类为代表&#xff0c;均在悄然替代普通的台灯&#xff0c;这同时也揭示了关于护眼灯的发展潜力。 一些企业看到护眼灯市场前景后&#xff0c;…

煤矿厂智能化可视化:提升安全与效率

运用图扑可视化技术对煤矿厂进行实时监控与数据分析&#xff0c;提高安全管理水平和生产效率。

C语言基础之数组

上一篇讲述了C语言函数的使用&#xff0c;本文讲述数组的相关概念&#xff0c;通过一维数组、二维数组、数组越界等详细讲解数组相关的具体内容&#xff0c;以辅助读者了解并掌握数组相关概念。 一维数组 一维数组的定义与创建 若无数组&#xff0c;我们要存储一堆类型相同的…

osalTaskREC_t ‘REC’缩写的含义

osalTaskREC_t中‘REC’缩写的含义。 在osal中定义了 osalTimerRec_t&#xff0c; osalTaskRec_t 结构体&#xff0c;那么osal源码中类型名 osalTaskREC_t中‘REC’缩写的含义是什么&#xff1f; 查了下往上资料&#xff0c;rec应该是 Record&#xff08;记录&#xff09;’的…

AI大模型之旅-最强开源文生图工具Stable Diffusion WebUI 教程

1.1克隆 Automatic1111 的 GitHub 仓库 在你想安装 Web UI 的文件夹路径下执行 git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui 这将会克隆整个仓库到本地。 这里会默认访问 https://huggingface.co/ 下载 因此需要魔法 1.2 进入仓库目录 cd stable-di…

手机改IP地址怎么弄?全面解析与操作指南

在当今数字化时代&#xff0c;IP地址作为设备在网络中的唯一标识&#xff0c;其重要性不言而喻。有时候&#xff0c;出于隐私保护、网络访问需求或其他特定原因&#xff0c;我们可能需要更改手机的IP地址。然而&#xff0c;对于大多数普通用户来说&#xff0c;如何操作可能还是…

Xshell调用powershell连接Teleport

公司最近切换telport管理SSH的连接访问。配置完成后&#xff0c;通过powershell可能远程访问。但是powershell缺少session管理功能&#xff0c;每次连接都记不住远程IP&#xff0c;很是头疼。 利用Xshell的管理能力是否可行&#xff1f;那是相当可行。 首先&#xff0c;新建se…

环境变量配置文件

环境变量配置文件 系统级配置文件 /etc/profile 系统范围的配置文件&#xff0c;适用于所有用户的登录 shell。 定义了系统级别的环境变量&#xff0c;并调用其他配置文件&#xff08;如 /etc/bash.bashrc&#xff09;。 /etc/bash.bashrc 非登录 shell 的全局配置文件。 在系…

Java异步编程:初学者快速入门到精通指南

异步编程简介 异步编程允许程序在执行某些操作&#xff08;如网络请求、文件I/O等&#xff09;时不被阻塞&#xff0c;能够继续执行其他任务。这不仅可以提高程序的响应性&#xff0c;还能提升资源的利用率。 为什么选择Java进行异步编程&#xff1f; Java提供了多种异步编程…