C++ day07

news2024/12/22 16:42:37

C++笔试题合集:

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

        1>在类中定义函数时,在函数名前加上virtual关键字,该函数就是虚函数,虚函数可以保证在父子类中只有一个该函数。

        2>当虚函数头 = 0;时该函数就是纯虚函数,当类中的某些成员函数没有实现的意义,仅仅时该类中拥有的功能,又想要在子类将其重写后,可以使用父类的指针和引用调用该函数,此时就可以将该函数设置为纯虚函数。

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

        1>如果基类的析构函数是虚的,则会先调用派生类的析构函数,再调用基类的析构函数,确保所有的资源都被清理干净,同时防止内存泄漏。   

        2>如果基类的析构函数是虚的,那么在删除一个指向派生类对象的基类指针时,程序将首先调用派生类的析构函数,然后再调用基类的析构函数,保证了在对象销毁时同样具有多态性。

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

        1>const数据成员不能在构造函数体内直接赋值(除非构造函数中有默认参数),所以通常在类的外部定义这些成员并进行初始化。可以在类外初始化,也可以通过构造函数初始化列表。

        2>static数据成员在类的所有实例之间共享,因此它必须在类外初始化,static数据成员可以通过类名直接访问,不需要创建类的实例。

4、指针和引用的区别?

       在 C++ 中,指针和引用是两种不同的方式来间接访问和操作变量。

        1>有空指针,但是没有空引用;

        2>引用必须初始化,但是指针可以不初始化;

        3>有多级指针,但是没有多级引用;

        4>引用的大小与引用的目标本身大小一致,而指针的大小是固定的8字节(64位);

        5>引用代表的是被引用目标本身,而指针代表的是指向目标的首地址;

        6>引用不占用内存空间使用的是引用目标的空间,而指针占用内存空间。

        指针操作起来更为灵活,但是操作方式较为复杂也有潜在的风险(如内存泄漏)。引用简化了语法,并且强制绑定,但不能用于处理空引用的情况。

5、new和malloc的区别?

        在 C++ 中,newmalloc 都是用来动态分配内存的手段。

        1>new申请空间时可以给空间进行初始化,而malloc不可以;

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

        3>malloc申请的空间是void*类型,使用时需要根据具体的情况进行强转,而new申请空间时返回指针的类型与申请空间的类型有关。

        当你需要动态创建对象,并且希望构造函数和析构函数能被系统自动调用时,可以使用new。

        当你在 C++ 程序中需要兼容 C 语言并且不需要系统自动调用构造函数和析构函数时,可以使用malloc。

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

        内存泄漏的产生:

        1>动态分配的内存没有通过相应的 deletedelete[] 操作释放;

        2>分配了内存后,没有保存好指向这块内存的指针,导致无法访问或释放这块内存;

        3>当使用基类指针管理派生类对象时,如果没有使用虚析构函数,可能会导致派生类的部分内存没有被释放。

        如何避免:

        1>动态分配的内存使用完毕后要及时使用delete或delete[]释放;

        2>可以使用智能指针。

7、C++的内存分区?     

        1>栈区:由编译器自动分配和释放,存放函数的参数值、局部变量,随着函数的调用而分配,函数结束时自动释放。

        2>堆区:由程序员分配和释放,使用 new 和 delete 或者 malloc 和 free 进行操作。

        3>静态区:包含全局变量和静态局部变量。

        4>常量区:存储字符串等常量且不允许被修改。

        5>代码区:存储程序的机器码且不可写入更不可修改。

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

        1>数组、链表、栈、队列、哈希表、树、图。

        2>时间复杂度和空间复杂度是用来评估算法效率的重要指标。

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

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

相关文章

Killing LeetCode [416] 分割等和子集

Description 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 Intro Ref Link:https://leetcode.cn/problems/partition-equal-subset-sum/description/ Difficulty:Med…

【C++报错已解决】std::ios_base::sync_with_stdio

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 专栏介绍 在软件开发和日常使用中,BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

CSS——边框线条动画效果

CSS——边框线条动画效果 上次我们实现了边框的线条缩放效果,今天我们来用三种方式完成边框的线条旋转动态效果。 方法一:使用伪元素 这是最普遍、最常用的方法,我们需要为边框所在的元素添加伪元素,然后旋转这个伪元素即可。本…

OpenMV与STM32通信全面指南

目录 引言 一、OpenMV和STM32简介 1.1 OpenMV简介 1.2 STM32简介 二、通信协议概述 三、硬件连接 3.1 硬件准备 3.2 引脚连接 四、软件环境搭建 4.1 OpenMV IDE安装 4.2 STM32开发环境 五、UART通信实现 5.1 OpenMV端编程 5.2 STM32端编程 六、SPI通信实现 6.1 …

【蓝桥杯省赛真题55】Scratch找不同游戏 蓝桥杯scratch图形化编程 中小学生蓝桥杯省赛真题讲解

scratch找不同游戏 第十五届青少年蓝桥杯scratch编程选拔赛真题解析 PS:其实这题在选拔赛里面就出现过类似的题目,只是难度提升了一点,具体可以见【蓝桥杯选拔赛真题84】Scratch找不同游戏 第十五届蓝桥杯scratch图形化编程 少儿编程创意编…

newbie难度——暴力枚举

newbie难度——暴力枚举 740 - 1743A 给出的样例能够理解,如果有n个数字不能选,要排四个数字,这四个数字只有两个不同,并且这两个相同的会各自出现两次,有6种排列方式,那如果给出小于样例n的数字&#xff…

电子电路智能设计课程内容是什么?

电子电路智能设计课程通常包括一系列内容,旨在教授学生如何使用现代电子设计自动化(EDA)工具和技术来设计和分析电子电路。 1. 电子设计自动化(EDA)概述: - EDA的历史和发展 - EDA在电子设计中的作用 - …

excel统计分析(2):描述统计工具

1.什么是【描述统计】工具 Excel中的描述性统计是指用于汇总和分析数据以更好地了解其特征的工具,方便快速了解数据集的中心趋势、离散程度和形状。 2.excel中添加【数据分析】功能 点击【文件>选项>加载项】,【管理>Excel加载项>转到】&…

SAP B1 认证考试习题 - 解析版(二)

前一篇:《SAP B1 认证考试习题 - 解析版(一)》 题目纯享版合集:《SAP B1 认证考试习题 - 纯享版》 三、采购流程 30. 下列哪个凭证在采购流程中是必须要完成的 A. 采购订单 B. 收货采购订单 C. 应付发票 D. 退货 E. 应付贷…

Vue项目快速整合WangEditor富文本编辑器

Vue项目快速整合WangEditor富文本编辑器 一、安装依赖 npm i wangeditor --save //富文本编辑器 npm install highlight.js -S //代码高亮 npm install dompurify vue-dompurify-html // 防xss 库二、app.vue代码案例 已对接图片、视频接口 ,具体看如下代码…

【Spring Cloud】Spring Cloud 概述

Spring Cloud 概述 1. 认识微服务1.1 单体架构1.2 集群和分布式架构集群和分布式 1.3 微服务架构分布式架构&微服务架构 1.4 微服务带来的挑战优势挑战 2. 微服务解决⽅案- Spring Cloud2.1 什么是Spring Cloud2.2 Spring Cloud版本Spring Cloud和SpringBoot的关系 2.3 Spr…

Linux部署RabbitMQ

目录 一、环境 二、开始安装 1、安装Erlang 2、安装RabbitMQ 3、修改配置文件 先复制覆盖配置文件,根据自己的版本进行路径更改 打开配置文件,53行 去掉注释%%和逗号 4、安装插件并启动服务 web管理界面工具 重新启动 RabbitMQ 服务 查看节点…

java日志门面之JCL和SLF4J

文章目录 前言一、JCL1、JCL简介2、快速入门3、 JCL原理 二、SLF4J1、SLF4J简介2、快速入门2.1、输出动态信息2.2、异常信息的处理 3、绑定日志的实现3.1、slf4j实现slf4j-simple和logback3.2、slf4j绑定适配器实现log4j3.2、Slf4j注解 4、桥接旧的日志框架4.1、log4j日志重构为…

什么是原生IP?

代理IP的各个类型称呼有很多,且它们在网络使用和隐私保护方面扮演着不同的角色。今天将探讨什么是原生IP以及原生IP和住宅IP之间的区别,帮助大家更好地理解这两者的概念和实际应用,并选择适合自己的IP类型。 一、什么是原生IP? 原…

流程、程序和政策之间的差异

流程、程序和政策是公司遵循的指导方针,以确保公司以有效和安全的方式运营。 每个企业都需要它们,但有时可能会让人搞不清一个从哪里开始,另一个从哪里结束。 企业经常混淆它们的用法,或者在真正含义上指错一个。 从高层次来看…

“数字武当”项目荣获2024年“数据要素×”大赛湖北分赛文化旅游赛道一等奖

9月26日,由国家数据局、湖北省人民政府指导的首届湖北省数据要素创新大会暨2024年“数据要素”大赛湖北分赛颁奖仪式在湖北武汉举行。由大势智慧联合武当山文化旅游发展集团有限公司参报的武当山“数字武当”项目,荣获文化旅游赛道一等奖。 据悉&#x…

《Linux从小白到高手》理论篇(三):vi/vim编辑器和Linux文件处理“三剑客”(sed/grep/awk)

List item 本篇介绍vi/vim编辑器和Linux文件处理“三剑客”(sed/grep/awk),这5个工具命令可能是Linux最最常用的,而且功能超级强大。 vi/vim vi和vim的基本介绍 所有的 Linux 系统都会内建 vi 文本编辑器。Vim 具有程序编辑的…

【frp】frp重启、frp启动、frp后台启动、frps dashboard等等

我写的关于frp配置的文章:frp配置 服务端frps 1. 创建服务文件 sudo nano /etc/systemd/system/frps.service2. 添加服务配置 在打开的文件中添加以下内容: [Unit] DescriptionFRPS Server Afternetwork.target[Service] Typesimple ExecStart/root…

LeetCode[简单] 136. 只出现一次的数字

给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。 思路 当 A 与 B 不同时,按…

代理模式简介:静态代理VS与动态代理

代理模式:静态代理VS动态代理 1、定义2、分类2.1 静态代理2.2 动态代理 3、使用场景4、总结 💖The Begin💖点点关注,收藏不迷路💖 1、定义 代理模式是一种设计模式,通过代理对象控制对目标对象的访问。简而…