C++结尾

news2024/12/25 14:28:18

面试题

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

在定义函数时前面加virtual。虚函数是为了,父子类中只有一个该函数。如果在子类重写虚函数,那么用的就是子类重写的虚函数;如果子类没有重写虚函数,那么调用的是父类继承的虚函数;如果这个类定义了虚函数,那么在子孙类该函数也是虚函数,不需要加vartual。

纯虚函数是在虚函数头后加“ = 0”;包含纯虚函数的类称为抽象类,不能进行实例化。子类需要重写纯虚函数,不然也是抽象类

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

当基类的指针指向子类在堆区申请的空间时,申请空间先构造父类在构造子类。但delete父类指针时只能释放父类指针的作用域,不能完全释放子类空间,就会导致内存泄露。所以需要再定义析构函数前加virtual设置成虚析构函数。该类的子孙类也会是虚析构函数。

3.如何初始化const和static数据成员。

使用const必须对变量进行初始化,构造函数使用初始化列表来完成初始化;

static成员变量一般在类内声明,类外定义,没有给定初始值默认为0。

4.指针和引用的区别

1.指针使用*进行定义,引用使用&进行定义

2.引用没有多级引用,指针有多级指针

3.定义引用的时候必须初始化,定义指针的时候可以不初始化;

4.没有空引用,有空指针;

5.引用不能更改目标,指针在后面可以更改指向;

6.引用没有引用数组,指针有指针数组;

7.引用就是目标本身,指针是存储目标的首地址;

8.引用不占用内存空间,使用目标的内存空间,指针需要占用内存空间

9.使用引用是直接就可以使用,使用指针需要*运算符

10.引用偏移是目标本身的偏移,指针的偏移是目标内存空间的偏移

5.new和malloc的区别

1.malloc的函数调用需要开辟内存空间,new的关键字,不需要开辟函数内存空间;

2.malloc申请空间没有单个和连续的区分,new申请有单个和连续空间的区分

3.malloc申请空间要手动计算空间大小,new的系统自动计算大小

4.malloc申请空间以字节为单位,new申请空间以数据类型为单位

5.malloc申请的空间是void *类型,需要是要进行强转,new申请的什么类型返回的就是什么类型的指针

6.malloc申请空间不能初始化,new申请空间可以进行初始化

7.new申请空间自动调用该类的构造函数,malloc不会

6.内存泄露怎么产生的?怎么避免

当父类指针指向子类申请的空间,在delete父类指针时,只能释放父类指针作用域的空间,不能释放剩余的子类空间,就会导致内存泄露。所以需要在父类的析构函数前加virtual设置成虚析构函数。

7.C++的内存分区

分为堆区:动态分配内存区域,由new和delete操作。栈区:已经初始化的局部变量;静态区:未初始化的局部变量和全局变量

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

常用的有数组:时间复杂度:访问(O(1));插入/删除(O(n));空间复杂度(O(n))

链表:时间复杂度:访问(O(n));插入/删除(O(1))(位置已经知道);空间复杂度(O(n))

栈:时间复杂度:入栈/出栈(O(1));空间复杂度(O(n))

队列:时间复杂度:入队/出队(O(1));空间复杂度(O(n))

类:

思维导图

 

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

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

相关文章

【JAVA开源】基于Vue和SpringBoot的网上租赁系统

本文项目编号 T 050 ,文末自助获取源码 \color{red}{T050,文末自助获取源码} T050,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析5.4 用例设计5.4.1 用…

生信软件37 - 基于测序reads的变异进行单倍型分型工具WhatsHap

1. WhatsHap简介 WhatsHap是一种使用DNA测序reads的基因组变异进行定相(分型)的软件,即基于reads的定相或单倍型组装,特别适用于长reads (三代测序数据),但也兼容短reads的定相。 Whatshap特点…

Ubuntu22.04安装cudnn详细步骤

下载指定版本的cudnn https://developer.nvidia.com/rdp/cudnn-archive#a-collapse804-111 安装 sudo dpkg -i cudnn-local-repo-ubuntu2204-8.9.7.29_1.0-1_amd64.deb 根据上步提示: sudo cp /var/cudnn-local-repo-ubuntu2204-8.9.7.29/cudnn-local-08A7D361-…

【C++】STL标准模板库容器set

🦄个人主页:修修修也 🎏所属专栏:C ⚙️操作环境:Visual Studio 2022 目录 📌关联式容器set(集合)简介 📌set(集合)的使用 🎏set(集合)的模板参数列表 🎏set(集合)的构造函数 🎏set(集合)的迭代…

【算法题】72. 编辑距离-力扣(LeetCode)

【算法题】72. 编辑距离-力扣(LeetCode) 1.题目 下方是力扣官方题目的地址 72. 编辑距离 给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符删除一个字符替换一个…

哈希算法以及容器实现

哈希 一,哈希算法1.什么是哈希2.哈希产生的原因3.常见哈希算法4.闭散列( 哈希表)1.线性探测2.二次探测 5.开散列(哈希桶)1.开散列插入2.开散列扩容 二,代码实现1.哈希表2.哈希桶1.迭代器的实现2.底层容器的…

C++ --- 模板为什么不能分离编译?

模板为甚么不能分离编译,但普通函数却可以? 一、前置知识二、普通函数能分离编译的原因三、模板不能分离编译的原因 一、前置知识 编译阶段: 源代码到目标代码: 编译器首先将源代码(如C/C文件)翻译成汇编语言&#x…

初学51单片机之I2C总线与E2PROM

首先先推荐B站的I2C相关的视频I2C入门第一节-I2C的基本工作原理_哔哩哔哩_bilibili 看完视频估计就大概知道怎么操作I2C了,他的LCD1602讲的也很不错,把数据建立tsp和数据保持thd,比喻成拍照时候的摆pose和按快门两个过程,感觉还是…

CentOs-Stream-9 设置静态IP外网访问

CentOs-Stream-9 设置静态IP,实现外网访问。这里面有些需要注意的地方,比如IP网段跟我们的宿主机不一样,需要查看具体的网络适配器网段,这样可以快速实现网络互通;另外它的网络配置文件也是不一样的。网络适配器对应的…

放弃 startActivityForResult,Activity Result API 优雅使用

放弃 startActivityForResult,Activity Result API 优雅使用 Activity Result API 是 androidx 中的一个新 api,旨在替代原有的 startActivityForResult 方法,用于在两个 Activity 或 Fragment 交换数据、获取返回结果。 过去如果 Activity…

了解独享IP的概念及其独特优势

在网络世界中,IP地址是用来识别和定位设备的标识符。独享IP是一种服务模式。使用代理服务器时,用户拥有一个不与其他用户共享的专用独立IP地址。与共享IP相比,独享IP为用户提供了更高的独立性和隐私保护。下面详细介绍独享IP的定义、工作原理…

OJ在线评测系统 后端 代码沙箱原生实现 初始化项目

代码沙箱Java原生实现 之前我们完成了快速的前端页面开发 重点是在后端 历史问题修复 Java原生代码沙箱实现 docker代码沙箱实现 解决历史遗留问题 代码编辑器切换语言失败 监听language属性 动态更改编辑器的语言 我们在这里实现的是一个线程形式的监听 watch(() > …

总结拓展十一:S4 HANA和ECC区别

第一节 S/4 HANA系统简介 SAP系统的产品线 R/1版本——主要财务模块R/3版本——基本实现全模块ECC6.0——2005年推出(ECC是2004年推出)HANA——数据库产品——属于内存数据库BW on HANA——HANA与数据分析相结合 拓展: 数据库类型&#x…

易盾滑块验证码

前言 这玩意我就搞定get请求和check请求,那个b接口的d参数还是有点问题,还有就是b接口的返回参数怎么用,是不是只是加了cookie我也不确定,所以有高手的话希望可以指导一下。我的虽然能够成功,但是只有前2次成功&#x…

ARM V8 A32常用指令集

文章目录 1. 算术指令1.1 加法命令ADD\ADDS1.2 带进位加法命令ADC\ADCS1.3减法命令SUB\SUBC1.4带借位减法命令SBC\SBCS 2.逻辑运算指令2.1逻辑与指令AND、ANDS2.2位清零指令BIC2.3逻辑或指令ORR\ORRS2.4逻辑异或指令2.5 逻辑左移LSL2.6逻辑右移LSR 3.比较指令3.1直接比较指令CM…

2024年华为杯研究生数学建模竞赛C题 波形机理建模+GBDT 完整文章代码|进阶可视化

2024年华为杯研究生数学建模竞赛C题 波形机理建模GBDT 完整文章代码|进阶可视化 全部问题已经更新完成,可视化图表20余张,代码量千余行,实在累到了… 由于篇幅原因,此处放出部分内容供参考~ 完整内容可以从底部名片的群中获取~ …

vue3监听子组件的生命周期

1.Vue3使用vue&#xff0c;vue2使用hook template:<compG vue:mounted"doSomething"></compG>script://监听子组件生命周期let doSomething (e: any) > {console.log("没有啊11", e);}; 2.打印结果

昇思MindSpore进阶教程--轻量化数据处理

大家好&#xff0c;我是刘明&#xff0c;明志科技创始人&#xff0c;华为昇思MindSpore布道师。 技术上主攻前端开发、鸿蒙开发和AI算法研究。 努力为大家带来持续的技术分享&#xff0c;如果你也喜欢我的文章&#xff0c;就点个关注吧 正文开始 在资源条件允许的情况下&#…

【趣学Python算法100例】数制转换

问题描述 给定一个M进制的数x&#xff0c;实现对x向任意一个非M进制的数的转换。 问题分析 要搞定这道题&#xff0c;关键在于学会不同数制之间的转换&#xff0c;主要是二进制、八进制、十六进制和十进制这几种。理解下面这几个概念非常重要&#xff1a; 基数&#xff1a;…

Go基础学习06-Golang标准库container/list(双向链表)深入讲解;延迟初始化技术;Element;List;Ring

基础介绍 单向链表中的每个节点包含数据和指向下一个节点的指针。其特点是每个节点只知道下一个节点的位置&#xff0c;使得数据只能单向遍历。 示意图如下&#xff1a; 双向链表中的每个节点都包含指向前一个节点和后一个节点的指针。这使得在双向链表中可以从前向后或从后…