news 2026/6/26 3:01:48

【C++面经】1-5

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【C++面经】1-5

谈一谈对内联函数的理解

内联函数,指一个函数被inline修饰。在编译时,会在调用内联函数的地方展开,没有调用函数创建栈帧的开销,可有效提高程序运行效率。

内联函数主要适用于逻辑简单,频繁调用的函数。它相对于宏有类型检查、作用域限制、参数只求值一次等优点。但过度使用会导致代码膨胀,反而降低性能。

是一种对编译器的一种优化建议,编译器最终决定是否内联。

struct和class的区别

struct的默认访问限定符是public,class是private。

struct的默认继承方式是public,class是private。

struct不可以定义模板参数,class可以,就像typename一样。

C语言中:struct是数据的集合,C++中:class是数据和方法的集合。

vector和list的区别

vector

内存连续,在堆中开空间,减少大小,内存不释放。

优点:支持随机访问,因为内存连续,所以高速缓存命中率高,时间复杂度O(1)。

缺点:插入、删除会对数据进行移动,时间复杂度O(n),内存不足需扩容。

list

双向链表,堆中开空间,内存不连续,通过指针对数据进行访问。

优点:插入、删除数据时间复杂度O(1)。

缺点:空间不连续,不支持随机访问,查找数据时间复杂度O(n)。

常量指针和指针常量

常量指针:例如const int* p;指针指向的内容只能读,不能改。

指针常量:例如int* const p;指针的指向不能改,但内容可以改。

malloc/free和new/delete的区别

共同点:都从堆上申请空间,都需要手动释放。

不同点:

1.malloc申请空间不会初始化,new会初始化。

2.malloc申请空间时需要手动计算发小,new只需要传类型即可。

3.malloc的返回值是void*,使用需要强转,new不需要。

4.malloc申请失败的返回值是NULL,需要对返回值判断,new申请失败会抛异常。

5.申请自定义对象时,malloc只开空间,不调用构造函数,free只会释放空间,不调用析构函数。new申请空间后会调构造函数完成初始化,delete释放空间前会调析构函数清除空间内的资源。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 2:53:40

哈迪斯1下载|V1.38233 护肝MOD 自定义祝福+双roll+开局金钱10w

下载链接 面向底层逻辑重构的《哈迪斯》(Hades)V1.38233 护肝MOD技术原理解析与功能实现 在Rougelike迷宫探索游戏《哈迪斯》(Hades)中,随机性(RNG)和高强度的资源刷取(Grinding&a…

作者头像 李华
网站建设 2026/6/26 2:51:56

ubuntu升级中断

在ubuntu中,我使用do-release-upgrade指令从20.2升级道22.04版本过程中,终端窗口卡住了,我就关闭了终端。实际上是运行完的。但是,我重启后,查看/etc/os-release已经升级到了22.04,这应该有隐患吧&#xff…

作者头像 李华
网站建设 2026/6/26 2:50:38

MCP1636x非隔离降压电源设计实战:外围选型与PCB布局避坑指南

1. 项目概述最近在做一个工业通信模块的项目,主控需要一路3.3V/2A的稳定电源,输入直接来自机柜的48V背板。这个需求一出来,脑子里第一个蹦出来的就是“非隔离降压”,而Microchip的MCP1636x系列几乎是这个场景下的“标准答案”。这…

作者头像 李华
网站建设 2026/6/26 2:47:14

从CAD到机器人:如何用creo2urdf实现CREO模型到URDF的无缝转换

从CAD到机器人:如何用creo2urdf实现CREO模型到URDF的无缝转换 【免费下载链接】creo2urdf Generate URDF models from CREO mechanisms 项目地址: https://gitcode.com/gh_mirrors/cr/creo2urdf 在机器人开发的世界里,有一个令人头疼的"语言…

作者头像 李华