c++八股文
文章平均质量分 78
芒果敲代码
努力过才会有结果,别一直想!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
29. 关键字decltype
decltype是C++11引入的编译期类型查询机制,能够根据表达式的值类别(lvalue、xvalue、prvalue)精确推导出类型,包括引用和cv限定。C++14进一步引入了decltype(auto),用于完美转发初始化器的值类别。decltype在模板编程中常用于后置返回类型与完美转发函数,以保持类型与引用语义。使用时需注意括号的影响及与auto的细微差别,以避免意外产生引用或丢失限定符。decltype(auto)在函数模板中特别有用,可以保留函数返回值的引用语义,实现完美转发。常见陷阱包括避免原创 2025-05-19 08:00:00 · 938 阅读 · 0 评论 -
28. Lambda表达式
C++11引入了Lambda表达式,用于定义匿名函数,使代码更简洁灵活。Lambda表达式包含参数列表、返回值类型和函数体,常用于与STL算法结合,如自定义排序规则或打印操作。Lambda表达式的捕获列表是其核心特性,允许以值或引用的方式捕获上下文变量。常见的捕获方式包括[](不捕获)、[=](按值捕获所有)、[&](按引用捕获所有)等。编译器将Lambda表达式转换为一个类,并重载operator()来实现其功能。Lambda表达式在C++中广泛用于简化代码,提升可读性和可维护性。原创 2025-05-18 08:00:00 · 885 阅读 · 0 评论 -
27. 右值引用和左值引用
左值和右值是C++中的基本概念,左值可以取地址,通常位于等号左边,而右值无法取地址,通常位于等号右边。左值引用只能指向左值,而右值引用(使用&&)专门指向右值,但可以通过std::move将左值强制转换为右值,使右值引用可以指向左值。std::move本身并不移动数据,只是进行类型转换。右值引用和std::move的主要应用场景是实现移动语义,避免深拷贝,从而提升性能。例如,在STL容器中,移动构造函数和移动赋值运算符重载函数通过右值引用实现,避免了不必要的拷贝操作。在实际编程中,建议在需要拷贝且被拷贝者之原创 2025-05-17 03:49:06 · 1261 阅读 · 0 评论 -
26.C++中的左值和右值是什么?++i是左值还是右值,++i和i++那个效率更高?
但对于自定义类型(如迭代器),),现代编译器可能优化掉。: 对于基本类型(如。原创 2025-05-08 01:38:43 · 711 阅读 · 0 评论 -
25.描述一下面向过程和面向对象?
【代码】25.描述一下面向过程和面向对象?原创 2025-05-08 01:38:10 · 585 阅读 · 0 评论 -
27.介绍一下vector、list的底层实现原理和优缺点?
访问第 i 个元素需要遍历链表,时间复杂度 O(n)。:节点分散存储,缓存局部性差(CPU缓存不友好)。直接计算地址,访问极快(CPU缓存友好)。:扩容时需要拷贝所有元素,可能引发性能抖动。指针(64位系统每个指针占 8 字节)。需要移动元素,时间复杂度 O(n)。只需调整指针,时间复杂度 O(1)。:动态增删节点,不会发生内存拷贝。:无额外指针开销,存储密度高。在大多数情况下是 O(1)。(例如扩容后删除大量元素)。原创 2025-05-08 01:37:09 · 957 阅读 · 0 评论 -
24.多线程为什么会发生死锁,死锁是什么?死锁产生的条件,如何解决死锁?
某些场景(如短期运行程序)可接受死锁,直接重启程序(如开发调试阶段)。,导致所有线程都无法继续执行,程序卡死。死锁的发生必须同时满足以下四个条件,原创 2025-05-03 05:00:00 · 812 阅读 · 0 评论 -
23.父类的构造函数和析构函数是否能为虚函数?这样操作导致的结果?
派生类部分未析构,导致资源泄漏。原创 2025-05-02 08:00:00 · 712 阅读 · 0 评论 -
22.类的声明周期?
资源管理(如文件句柄、锁)应与对象生命周期绑定,构造时获取资源,析构时释放。: 若析构函数可能抛异常,需捕获并处理,否则程序可能终止(如栈展开时)。原创 2025-05-01 08:00:00 · 498 阅读 · 0 评论 -
21. socket中的多路复用,及其优缺点,epoll的水平和边缘触发模式?
当某个FD就绪(可读/可写/异常)时通知程序处理,避免阻塞等待。的技术,核心是通过系统调用。原创 2025-04-30 08:00:00 · 1665 阅读 · 0 评论 -
20. 进程之间的通信方式有哪些?
单向通信,父子进程间使用(匿名管道),或通过文件系统(命名管道)。原创 2025-04-29 08:00:00 · 356 阅读 · 0 评论 -
19.内存对齐是什么?为什么要进行内存对齐?内存对齐有什么好处?
内存对齐通过强制数据地址满足特定倍数要求,优化CPU访问效率并兼容硬件限制。其核心价值在于平衡存储空间与运行时性能,是底层编程和高性能计算的关键优化点。原创 2025-04-28 08:00:00 · 681 阅读 · 0 评论 -
18.class和struct的区别?
语法区别:仅默认访问权限和继承方式不同。设计意图用struct强调数据公开(如坐标点、配置参数)。用class强调数据封装(如银行账户、网络连接)。代码一致性:团队应统一约定使用风格。原创 2025-04-28 08:00:00 · 643 阅读 · 0 评论 -
17.原子操作是什么?
硬件原子指令(如x86的LOCK前缀、ARM的缓存一致性协议(如MESI)编译器与操作系统的协作理解原子操作是掌握多线程编程、无锁编程和同步机制(如锁、信号量)的基础。原创 2025-04-27 08:00:00 · 505 阅读 · 0 评论 -
16.锁的底层原理是什么?
锁的底层实现是硬件原子指令 + 操作系统调度 + 内存模型硬件提供原子操作保证互斥;操作系统管理线程阻塞与唤醒;内存屏障确保多核缓存一致性。理解锁的底层原理有助于避免死锁、优化高并发场景性能。原创 2025-04-26 08:00:00 · 1077 阅读 · 0 评论 -
15.程序的运行步骤
【代码】15.程序的运行步骤。原创 2025-04-25 15:20:34 · 773 阅读 · 0 评论 -
13-14,指针空间清理,`#define`和`const`的区别。
系统通过内存分配时隐藏的元数据(如大小、元素数量)来确定释放空间的大小。这种机制依赖于编译器和内存分配器的实现,但核心原理是统一的:元数据存储在用户不可见的区域,释放时通过指针偏移读取。理解这一点有助于避免内存泄漏和悬空指针问题,同时为手动内存管理提供底层逻辑支持。原创 2025-03-26 11:47:34 · 793 阅读 · 0 评论 -
10-12. 深浅拷贝,智能指针,弱指针计数吗?以及malloc内存分配方式?
方式拷贝行为是否有二次释放问题是否独立内存浅拷贝仅复制指针地址可能会有共享同一块内存深拷贝复制指针指向的内容不会各自独立智能指针共享或独立管理资源不会取决于指针类型不会增加对象的引用计数,但会维护一个弱引用计数。控制块中存储了强引用计数和弱引用计数,控制块通常是在第一个创建时分配的。的主要作用是解决的循环引用问题,并且可以通过lock()方法临时获取一个来访问对象。原创 2025-03-17 14:03:41 · 454 阅读 · 0 评论 -
3-9 final、虚函数、智能指针、匿名函数、右值引用,左值引用和指针。
每个对象在内存中会包含一个指向虚函数表的指针(vptr)。当通过基类指针或引用调用虚函数时,程序通过vptr找到虚函数表,再根据函数在表中的偏移量调用对应的函数。原创 2025-03-12 01:57:14 · 997 阅读 · 0 评论 -
2. 多态的实现原理(实现方式)是什么?以及多态的优点(特点)?
多态是C++面向对象设计的核心特性,通过虚函数表和动态绑定实现运行时灵活性,显著提升代码的可维护性、扩展性和抽象能力。在面试中,可结合具体场景(如游戏开发、图形渲染)说明其实际应用价值。原创 2025-03-11 13:08:52 · 800 阅读 · 0 评论 -
c++八股文理解篇
由于本人即将毕业,但是知识不是很牢固,所以出一个系列的文章用于复习,也供大家参考!如果需要面试篇:请参考。原创 2025-03-10 12:26:50 · 523 阅读 · 0 评论
分享