C++面试---小米
创始人
2024-11-16 03:06:32
0次

一、static 关键字的作用,及和const的区别
static关键字作用:
1、在类的成员变量前使用,表示该变量属于类本身,而不是任何类的实例。
2、在类的成员函数前使用,表示该函数不需要对象实例即可调用,且只能访问类的静态成员变量和其他静态成员函数。
3、在局部变量前使用,表示该变量在函数调用结束后不会被销毁,而是保持其值不变。
4、在全局变量或函数前使用,限制其作用范围仅在定义的文件内,对其他文件不可见。

static和const区别:
1、static关键字用来定义静态变量,其生命周期为程序执行期间,但它的作用域限定于定义它的文件或函数内。
2、const关键字定义常量,其值在定义后不能被修改,用来保证数据的不变性。它只影响它所修饰的变量的可变性,而不影响其生命周期。

二、extern 关键字的作用
主要作用是:
1、允许在多个文件中访问同一个全局变量或函数。
2、表明变量或函数的定义存在于其他文件中。

三、指针和引用的区别

1、指针是一个变量,其值为另一个变量的地址,通过地址,可以直接访问和修改对应内存中的值。
2、引用是别名,它为对象提供了一个新的名字,对引用的操作等同于对对象本身的操作。
3、指针可以为空,引用必须绑定到一个对象。
4、指针的值(即所指对象的地址)可以改变,但引用一旦与某个对象绑定,就不能再改变引用到其他对象。

四、c++内存分配的方式

1、静态存储:编译时分配,如全局变量、静态变量。
2、自动存储:函数内部声明的变量,如局部变量,随着函数调用创建和退出销毁。
3、动态存储:使用new和delete进行手动分配和释放的堆内存。

五、静态内存分配和动态内存分配的区别,静态分配的优缺点

区别:
1、静态内存分配在编译时就确定了存储空间的大小和生命周期,通常用于全局变量和静态局部变量。
2、动态内存分配在运行时根据需要动态地分配和释放内存,通常使用new和delete操作符。

静态内存分配的优点:
1、管理简单,没有额外的运行时开销。
2、生命周期长,随程序启动创建,程序结束时销毁。

静态内存分配的缺点:
1、灵活性低,必须提前预知并定义所需内存大小。
2、可能会导致内存浪费,若预分配内存未被充分利用

六、讲一下c++智能指针及shared_ptr的底层实现
unique_ptr:独占所有权,不支持复制和赋值操作。
shared_ptr:引用计数机制,多个智能指针可以共享同一个对象。
weak_ptr:不对对象的所有权计数,用于解决shared_ptr的循环引用问题。

shared_ptr的底层实现
包括两个主要部分:
1、控制块:存储引用计数和指向动态分配的对象的指针。
2、智能指针对象:包含对控制块的引用。

七、map 和 unordered_map 区别
map:
1、基于红黑树实现。
2、元素按键自动排序。
3、查找、插入和删除操作的时间复杂度为O(log n)。

unordered_map:
1、基于哈希表实现。
2、元素不排序,按哈希值存储。
3、平均情况下查找、插入和删除操作的时间复杂度为O(1),最坏情况为O(n)。

八、STL有哪些容器,各自特点

序列容器:
1、vector:动态数组,支持快速随机访问。
2、list:双向链表,支持快速插入和删除。
3、deque:双端队列,两端都可以快速插入和删除。

关联容器:
1、set:集合,元素唯一且自动排序。
2、map:键值对集合,键唯一且自动排序。
3、multiset:集合,元素可以重复,自动排序。
4、multimap:键值对集合,键可以重复,自动排序。

无序关联容器(C++11新增):
1、unordered_set:集合,元素唯一,基于哈希表实现,不排序。
2、unordered_map:键值对集合,键唯一,基于哈希表实现,不排序。
3、unordered_multiset:集合,元素可以重复,基于哈希表实现,不排序。
4、unordered_multimap:键值对集合,键可以重复,基于哈希表实现,不排序。

适配器容器:
1、stack:栈,后进先出。
2、queue:队列,先进先出。
3、priority_queue:优先队列,元素按优先级出队。

相关内容

热门资讯

实测交流透视挂!宝玛大厅ai智... 实测交流透视挂!宝玛大厅ai智能透视挂教程,宝玛大厅破解软件经验(本来有挂辅助)1、每一步都需要思考...
总算了解辅助器!朱雀吴江三缺一... 总算了解辅助器!朱雀吴江三缺一ai智能透视辅助挂技巧,朱雀吴江三缺一好像是有挂(有辅助挂细节)朱雀吴...
今日公布透视!九五至尊大厅ai... 今日公布透视!九五至尊大厅ai智能透视插件,九五至尊大厅有没有透视挂窍门(切实有挂技术)1、在九五至...
玩家必看科普开挂!聚闲麻将ai... 玩家必看科普开挂!聚闲麻将ai智能透视辅助挂软件,聚闲麻将总是真的有挂(有辅助挂方式)聚闲麻将能透视...
据报道开挂!旅游娱乐ai智能开... 据报道开挂!旅游娱乐ai智能开挂工具,旅游娱乐辅助工具演示(一直有挂教学)1、全新机制【旅游娱乐ai...
一分钟揭秘开挂!决胜朋来麻将a... 一分钟揭秘开挂!决胜朋来麻将ai智能透视辅助挂教程,决胜朋来麻将真是真的是有挂(有辅助挂总结)1、首...
如何分辨真伪透视!红牛ai智能... 如何分辨真伪透视!红牛ai智能透视攻略,红牛是不是有挂经验(真是有挂技术)1、操作简单,无需红牛手机...
2分钟细说辅助器!江湖大庆麻将... 2分钟细说辅助器!江湖大庆麻将ai智能透视辅助挂攻略,江湖大庆麻将竟然是真的有挂(有辅助挂头条)1、...
总算清楚透视挂!老夫子厅ai智... 总算清楚透视挂!老夫子厅ai智能透视挂技巧,老夫子厅怎么开挂课程(好像发现有挂)老夫子厅破解侠是真的...
解密关于辅助!菜鸟麻将ai智能... 解密关于辅助!菜鸟麻将ai智能透视辅助挂脚本,菜鸟麻将总是存在有挂(有辅助挂存在)1、用户打开应用后...