9.26 C++杂项

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

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

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

4.指针和引用的区别

5.new和 malloc的区别

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

7.C++的内存分区

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

1.虚函数是实现多态的重要组成,在函数前加virtual来定义虚函数,它使得父子类中只有一个该函数,使其能在派生类中被重写,从而重新编写函数体内的内容来实现不同的功能。虚函数出现时会出现虚指针来指向虚函数表,虚函数表中记录了所有的虚函数,当子类对象调用虚函数时,通过虚指针来遍历虚函数表寻找要调用的函数。

包含纯虚函数的类称为抽象类,不能用来实例化对象;纯虚函数用来定义只应拥有的功能而没有意义的函数,在虚函数头后加"=0"定义纯虚函数;其派生子类必须重写父类的纯虚函数,否则该子类也是抽象类,无法定义对象。

2.子类继承父类时,会在堆区空间内先构造父类空间再构造子类,用delete释放内存空间时,父类指针的作用域只限于父类,只会释放父类而子类无法释放,造成了内存泄露,因此要构造一个虚析构函数来释放子类自己的空间,在虚构函数前加virtual

const

必须在构造函数的初始化列表进行初始化,初始化后无法被修改

static

定义静态成员变量时,需要在类内定义,类外初始化,它属于所有类对象,一个对象修改,其他对象中的该成员也跟着修改

1.指针的定义标识符是*,引用的定义标识符是&;

2.定义指针时可以时空指针,定义引用时必须要初始化一个对象;

3.指针的指向可以改变,引用初始化后不能改变引用的对象;

4.指针大小固定(4/8字节),引用就是引用对象本身的大小;

5.指针占额外的字节,引用不需要额外的内存空间;

6.指针的使用需要*运算符,引用的使用方法和所引用的对象一致;

7.指针所指向的是目标的起始地址,引用就是所引用对象本身

8.有多级指针,没有多级引用;

9.指针的偏移是根据目标单位内存大小,引用就是目标本身的偏移;

1.new是c++中的关键字,无需额外内存空间,malloc是标准库中的函数;

2.new会自动计算需要申请的空间大小,malloc需要手动给定字节大小;

3.new申请空间时可以初始化,malloc不行;

4.new在申请空间时会调用该类中的构造函数,malloc不会;

5.new在申请空间时调用了malloc

6.new申请空间时区分单个空间和连续空间,malloc不区分

堆区内存未释放;指针指向改变后,原来的内存未释放;发生异常后未处理;

确保指针不再使用后将内存空间释放;检查内存分配时的返回值,确保发生错误时内存空间被释放

7.堆区、栈区、数据区

9、

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

时间复杂度用来评估算法运行时所需的时间,空间复杂度用来评估算法运行时占用的内存大小。

相关推荐
二川bro几秒前
第48节:WebAssembly加速与C++物理引擎编译
java·c++·wasm
二川bro3 分钟前
第45节:分布式渲染:Web Workers多线程渲染优化
开发语言·javascript·ecmascript
2501_941111939 分钟前
基于C++的区块链实现
开发语言·c++·算法
hetao173383712 分钟前
2025-11-16~17 hetao1733837的刷题记录
c++·算法
_OP_CHEN16 分钟前
算法基础篇:(九)贪心算法拓展之推公式:从排序规则到最优解的推导艺术
c++·算法·贪心算法·推公式·算法竞赛·acm/icpc
czxyvX24 分钟前
010-C++之List
开发语言·c++·list
小艳加油32 分钟前
生态学研究突破:利用R语言多元算法实现物种气候生态位动态分析与分布预测,涵盖数据清洗、模型评价到论文写作全流程
开发语言·算法·r语言
程序猿_极客35 分钟前
【2025 最新】 Maven 下载安装与配置教程(超详细带图文Windows 版):从入门到实战
java·开发语言·windows·maven·maven安装
励志前端小黑哥42 分钟前
uv包管理器--python也有自己的pnpm了
开发语言·python·uv
阿龍17871 小时前
媒体文件问题检测脚本(一)(python+ffmpeg)
开发语言·python