c++9月26日

devtools/2024/10/19 18:21:06/

1.什么是虚函数,什么是纯虚函数
>虚函数:在父类的成员函数前加virtual关键字,在子类中重写该函数,这个函数就是虚函数
注意:如果子类没有对这个虚函数重写,在调用时会调用父类的函数实现
>纯虚函数:在父类成员函数前加virtual关键字(该函数不需要实现具体功能),在函数声明后加=0
注意:这会使父类变为抽象类,不能实例化对象,需要在子类中重写这个纯虚函数才能进行实例化对象

2.基类为什么需要虚析构函数
父类指针和引用的作用域只能在自身的范围内,不能直接调用子类的析构函数,会导致内存泄漏,为了确保在使用父类指针或引用delete子类对象时,能够正确调用子类的析构函数

3.如何初始化const和static数据成员
const数据成员必须在构造函数的初始化列表中进行初始化,因为在对象创建后,对象的成员就不能改变了
static数据成员可以脱离类对象存在,需要在类外定义和初始化,在类内声明

4.指针和引用的区别
>虽然指针和引用都可以访问变量,但两者有很大的区别
>指针是一个变量,存储另一个变量的地址,引用是另一个变量的别名,它和另一个变量共用一个空间
>指针在声明时可以不初始化,可以指向其它地址,引用在定义时必须初始化,初始化后不能更改指向
>指针可以进行算数运算,可以进行偏移,引用不能算数运算,它只能指向一开始的变量
>指针的大小是系统决定的一般为8字节,引用的大小和它的目标一致
>有多级指针,无多级引用
>指针需要解引用,引用可以直接使用
>有指针数组,无引用数组
5.new和malloc的区别
>malloc是标准库提供的函数,属于函数调用,new是c++的关键字
>malloc申请空间没有单个和连续的区分,new有
>malloc申请空间需要手动计算,new会根据数据类型自动计算
>malloc申请空间类型为void*类型使用时需要强转,new不需要
>malloc申请类对象空间时不会调用该类对象的构造函数,new会调用

6.内存泄漏怎么产生的,如何避免
内存泄漏:动态内存分配后未能释放该内存,导致无法访问这些内存
原因:
>未使用free或delete释放动态分配的内存
>指针丢失:指针被重新赋值或越界访问无法访问原来的内存
如何避免:确保每次使用malloc和new后,在合适的时机调用free和delete

7.c++的内存分区
代码区:存放可执行代码
数据区:存放全局变量和静态变量
堆区:用于动态内存分布
栈区:存储局部变量和函数调用信息

8.常见的数据结构都有那些,时间复杂度和空间复杂度如何使用
线性表:顺序表,链表,栈,队列

思维导图


http://www.ppmy.cn/devtools/117715.html

相关文章

微信小程序拨打电话点取消报错“errMsg“:“makePhoneCall:fail cancel“

问题:微信小程序中拨打电话点取消,控制台报错"errMsg":"makePhoneCall:fail cancel" 解决方法:在后面加上catch就可以解决这个报错 wx.makePhoneCall({phoneNumber: 181********}).catch((e) > {console.log(e) //用…

HTML中的列表、表格、媒体元素和内联框架

HTML中的列表、表格、媒体元素和内联框架 本章目标 会使用有序列表、无序列表和定义列表实现数据展示(重点)会使用表格实现数据会使用媒体元素在网页中播放视频(重点)会使用html5结构元素进行网页布局(重点&#xff…

嵌入式开发中学习C++的用处?

这个问题一直有同学在问,其实从我的角度是一定是需要学的,最直接的就是你面试大厂的嵌入式岗位或者相关岗位,最后一定会问c,而很多人是不会的,这就是最大的用处,至于从技术角度考量倒是其次,因为…

动态住宅IP的多元化应用

在现代网络环境中,动态住宅IP以其灵活、隐蔽性强和全球范围覆盖的特点,逐渐成为各行业不可或缺的工具。本文将从多个角度解析动态住宅IP的多元化应用。 1. 跨境电商中的账号管理 在跨境电商平台上运营,通常需要多个账号来管理不同市场和区域…

Linux标准IO(二)-打开、读写、定位文件

1.打开文件fopen 在前面所介绍的文件 I/O 中&#xff0c;使用 open()系统调用打开或创建文件&#xff0c;而在标准 I/O 中&#xff0c;我们将使用库函数fopen()打开或创建文件&#xff0c;fopen()函数原型如下所示&#xff1a; #include <stdio.h>FILE *fopen(const ch…

深入解析 Vert.x 的关键特性、架构及其在异步编程中的应用

下面将对 Vert.x 进行更深入的解读&#xff0c;从其底层架构、事件驱动模型、线程模型、集群模式、以及与现代微服务体系的深度集成等方面来进行拓展&#xff0c;以便全面理解 Vert.x 作为一个异步非阻塞框架的优势和复杂性。 1. Vert.x 底层架构详解 1.1 多反应器架构 (Mult…

STL之list

list简单介绍 list是STL的一个序列式容器&#xff0c;底层的实现是一个双向链表&#xff0c;每个节点有两个指针分别指向前一个元素和后一个元素list在任意位置的插入与删除元素的效率很高&#xff0c;但是它访问元素的效率就相对比较低&#xff0c;它不支持任意位置的访问 l…

IM项目-----语音识别子服务

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、搭建思想二、服务器搭建1.继承speechService类,重写业务代码2.编写语音识别服务器类3.建造者类编写 三.测试 前言 语音转换子服务&#xff0c;用于调用语音…