c++ 杂项

简答题

1、什么是虚函数?什么是纯虚函数?

虚函数是在类中定义函数时,在函数前加 virtual 关键字。父子类中只有一个该函数。

如果子类中没有重写该虚函数。那么父子类空间中使用的都是父类定义的该函数。

如果子类中重写了该虚函数,那么父子类空间中使用的都是子类重写的该虚函数。

如果当前类的函数设置成虚函数,那么该类的子子孙孙类中的该函数都是虚函数。

纯虚函数是定义类时,类中的某些成员函数没有实现的意义,仅仅只是该类中应该拥有的功能。

想要让子类来重写后,使用父类指针或引用指向子类对象时来调用该重写的虚函数

纯虚函数定义格式: 虚函数头 = 0;

包含纯虚函数的类,称为抽象类,抽象类是不能实例化对象的

纯虚函数需要子类进行重写,如果子类没有重写父类的纯虚函数,那么该函数在子类中也还是纯虚函数,子类也是抽象类

2、基类为什么需要虚析构函数?

当父类指针指向子类在堆区空间中的对象时,会先构造父类再构造子类,整个子类空间会全部构造出来。当使用delete关键字释放父类指针时,由于父类指针的作用域只是父类空间的内容,只能释放父类空间,子类自己的空间无法释放,导致内存泄漏。使用虚析构函数可以解决内存泄漏问题。

3、如何初始化 const 和 static 数据成员?

初始化 const 数据成员:对于const数据成员,一般在类定义的同时被初始化。

初始化 static 数据成员:static 数据成员初始化只在第一次执行时发生一次。

4、指针和引用的区别

1、引用使用标识符&,指针使用标识符*

2、没有空引用,但有空指针

3、没有多级引用,但有多级指针

4、没有引用数组,但是可以定义指针数组

5、定义引用时必须进行初始化,定义指针时可以不用初始化

6、引用一旦指定目标后,就不能进行修改了,而指针后期可以修改指向

7、引用就是目标本身,而指针记录的是目标的起始地址

8、引用不占内存空间,而指针需要占内存空间

9、引用的大小跟目标的大小保持一致,而指针的大小都是8字节(64位操作系统)

5、new 和 malloc 的区别

1、malloc\free是标准库中提供的函数,属于函数调用,而new\delete是C++中的关键字,无需开辟函数内存空间

2、malloc\free申请空间时,没有单个和连续空间的区别,而new\delete申请时区分单个和连续空间的操作

3、 malloc\free申请空间时,需要手动计算要申请空间的大小,而new\delete申请空间时,会自动计算大小

4、malloc\free申请空间时,以字节为单位,而new\delete申请空间时,以数据类型为单位

5、new申请空间时可以给空间进行初始化,而malloc不可以

6、 malloc申请出的空间结果是void*类型,使用时需要根据具体的情况进行强转,而new申请空间时,申请什么类型的空间返回的就是什么类型的指针

7、 new申请对象空间时,会自动调用该对象所在类中的构造函数,而malloc不会

8、delete释放对象空间时,会自动调用该对象所在类的析构函数,而free不会

9、 在new和delete的底层实现中,还是调用了c语言中的malloc、free

6、内存泄漏怎么产生的?如何避免?

使用 new 分配了内存,但是没有相应的 delete 来释放它。

如何避免:对于每次使用 new 分配的内存,都应该有相应的 delete 来释放。对于使用 new[] 分配的数组,应该使用 delete[] 来释放。确保异常安全,即在抛出异常之前清理已分配的资源

7、C++的内存分区

代码区:存储程序的可执行代码,它是只读的,以防止程序在运行过程中被意外修改。

数据段: 已初始化数据段:存储已初始化的全局和静态变量。 未初始化数据段:存储未初始化的全局和静态变量。

堆:用于分配动态内存,程序运行时通过 malloc函数分配的内存。

栈:存储局部变量和函数调用信息(如返回地址、参数等)。当函数调用完成后,分配给这个函数的栈空间会被释放。

常量区:存储常量数据,例如字符串字面量和其他编译时常量,这个区域通常也是只读的。

8、常用的数据结构有哪些?时间复杂度和空间复杂度如何使用

数组: 时间复杂度:O(n^2) ,空间复杂度:O(n)。

链表:时间复杂度:访问,查找O(n),插入和删除O(1)。 空间复杂度:O(n)。

栈: 时间复杂度:O(1)。 空间复杂度:O(n)。

队列:时间复杂度:访问,查找O(n),插入,删除O(1)。 空间复杂度:O(n)。

哈希表: 时间复杂度:O(n), 空间复杂度:O(n)。

二叉树:时间复杂度:O(log n), 空间复杂度:O(n)。 

知识梳理:

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

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

相关文章

Leetcode面试经典150题-322.零钱兑换

给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。 你可以认为每种硬币的数量是无限的。 示…

9.26作业

C 面试题 1,什么是虚函数?什么是纯虚函数? 虚函数:父子类中,在父类中的函数需要在子类中进行重写,重写后父子类空间中使用的都是重写后的函数,该函数就是虚函数,虚函数的声明需要在函数前加virtual。 纯虚函数&…

从自身经历浅谈对于C++/Java的认识

1.声明 因为一些其他的原因,我决定从C转到java方向学习,后期可能就要换方向了,以后主要学习这个java相关的这个技术了,起码暂时不会学习这个C里面的内容了; 2.我的感慨 当时选方向的时候,我自己就是选的…

详解 Spring Boot 的 RedisAutoConfiguration 配置

引言 带大家分析 Spring Boot 内置的有关 Redis 的自动配置类【RedisAutoConfiguration】。 1. Spring Data Redis Spring Data Redis 是 Spring Data 家族的一部分,它提供了从 Spring 应用程序中轻松配置和访问 Redis 的功能。 我们来看看官方介绍的特性&#xff…

超60%项目聚焦智能体,百度“文心杯”创业大赛卷起来了

“通过AI Native工具AI Native工作流AI Native创作者协同,我们将传统A级漫画的创作成本降低了62%。”水母智能创始人兼CEO苗奘表示,“4月份决定报名参加‘文心杯’创业大赛,除了百度提供的奖金和资源外,更吸引我的是Robin的理念&a…

Synchronized对字符串上锁?

HTTP去请求就会像上面那种自动加个new String(),就会导致锁的线程不是同一个对象,可以通过获取对应常量达到效果 但还有个问题,字符串常量是存在JVM的常量池中。常量池是全局的。所以在其他地方有引用到相关常量时&…

OCI 简介:Kubernetes 环境下从代码到容器的全流程

OCI 简介 在容器化技术的演进中,OCI(Open Container Initiative)提供了一套标准化的规范,帮助统一容器的构建、分发和运行。OCI 规范包含三个部分: OCI Image-spec:定义了容器镜像的结构,确保…

WAF,全称Web Application Firewall,好用WAF推荐

WAF,全称Web Application Firewall,即Web应用防火墙,是一种网络安全设备,旨在保护Web应用程序免受各种Web攻击,如SQL注入、跨站脚本(XSS)、跨站请求伪造(CSRF)等。 WAF通…

STM32堆栈溢出Bug

可以看到x和buf交换位置后,x处于0x200006B0地址上是不会被函数B影响到的,实际上B函数对buf赋值的过程是出现了越界行为的,所以导致了x在buf地址之后的话会被意外修改掉值。

海外媒体投稿:如何运用3种国内外媒体套餐发稿突出重围?

在当今瞬息万变的经营环境中,突出重围营销推广是每家企业都需要思考的问题。为了能突出重围并提升影响力,国内外媒体套餐内容成为了一个非常受欢迎的挑选。下面我们就为大家讲解如何运用三种不同种类的国内外媒体套餐内容来推广突出重围。 2.微博营销新浪…

Nacos笔记

nacos注册中心: nacos注册中心得单击非持久化搭建: 单机:指的是 Nacos 运行在单个实例上,通常用于开发和测试环境。非持久化:表示注册的信息(如服务实例、元数据等)不会被保存在数据库中。Nac…

Python 从入门到实战29(目录的操作)

我们的目标是:通过这一套资料学习下来,通过熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。 上篇文章我们讨论了文件的打开、创建、关闭、读取的相关知识。今天…

智慧政务助力实现服务民生新突破

在数字化转型的浪潮中,中国移动紧密结合人工智能(AI)技术,推动政务服务的智能化升级。近日,中国移动正式发布政务大模型3.0版本,以科技创新提升政务效率,实现服务民生的新突破。 为什么…

从0到1训练私有大模型技能与应用实现

1.背景 近期,GPT大模型的发布给自然语言处理(NLP)领域带来了令人震撼的体验。随着这一事件的发生,一系列开源大模型也迅速崛起。依据一些评估机构的评估,这些开源模型大模型的表现也相当不错。一些大模型的评测情况可…

关于Pencils Protocol 近期市场活动,通读这篇就够!

Pencils Protocol是Scroll上综合性的DeFi协议,自9月18日开始其陆续在Tokensoft、Bounce、Coresky等平台开启DAPP通证的销售,并分别在短期内完成售罄。吸引了来自韩国、CIS、土耳其等70多个国家的5万多名认证用户,反响热烈, Pencil…

VMware搭建DVWA靶场

目录 1.安装phpstudy 2.搭建DVWA 本次搭建基于VMware16的win7系统 1.安装phpstudy 下载windows版本:小皮面板-好用、安全、稳定的Linux服务器面板! 安装后先开启mysql再开启apache,遇到mysql启动不了的情况,最后重装了phpstud…

一窥AI大模型奥秘:技术前沿与产业应用双轮驱动

在科技日新月异的今天,人工智能(AI)正以前所未有的速度重塑着我们的生活与工作方式。其中,AI大模型作为技术的最前沿,不仅引领着技术体系的革新,更是产业实践与未来趋势的关键所在。 近期,有幸…

YOLOv8+注意力机制+PyQt5玉米病害检测系统完整资源集合

资源包含可视化的玉米病害检测系统,基于最新的YOLOv8注意力机制训练的玉米病害检测模型,和基于PyQt5制作的可视玉米病害系统,包含登陆页面和检测页面,该系统可自动检测和识别图片或视频当中出现的七类玉米病害:矮花叶病…

Linux防火墙-什么是防火墙

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 什么是防火墙 我们想象一下把每台服务器当成一个小区,我们去访问另外一个小区的朋友,我们需要经过什…

黑马头条day4 自媒体文章自动审核

阿里云内容安全调用 其实这个接口调用不是很难 但是需要花钱 就没买 我开了按量计费 但是还是不行 所以就没测试 于是尝试自己写返回成功值 效果不好 后来发现不如直接在函数里边取消调用文字和图片审核 这样更简单 远程调用与降级处理 这里有个bug调试了好久 第一个就是总…