
C++深度探索与实战专栏
文章平均质量分 97
深入剖析C++精髓,分享实战技巧与项目经验,助力开发者精进技能,攀登编程高峰。
byte轻骑兵
名校本硕科班出身,现就职某大厂从事嵌入式开发,深耕Android、Linux、RTOS、通信协议、AIOT、物联网、C/C++等技术,欢迎交流~。
个人微信公众号「嵌入式硬核研究所」,专注分享嵌入式系列干货、大厂面试真题解析。
欢迎订阅关注,一起解锁技术进阶与求职通关密码,期待您的三连支持!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【C++】主要特性概览
c++主要特性汇总大全原创 2024-09-04 18:47:30 · 1198 阅读 · 24 评论 -
C++学习路线:从基础到精通
从基础语法到面向对象,掌握STL与内存管理,进阶模板与多线程,实战项目提升能力,持续学习新标准与优秀代码,成为C++高手。原创 2024-09-17 00:45:00 · 10097 阅读 · 25 评论 -
【C++】std::memcpy与std::copy:介绍与对比分析
本篇深入探讨了C++中std::memcpy与std::copy两个函数的用法。前者按字节复制,适用于低级内存操作;后者通过迭代器复制,保证类型安全。文章还对比了两者在处理重叠内存区域时的行为差异。原创 2024-10-10 00:15:00 · 2425 阅读 · 13 评论 -
【C++】字符串处理标准库函数大全
在C++中,字符串处理主要通过标准库中的std::string类以及C风格的字符串函数(如strcpy,strlen等,但这些通常不推荐在C++中使用,除非有特殊需求)来进行。下面主要汇总了std::string类提供的一些常用字符串处理成员函数,以及部分C++标准库中与字符串处理相关的函数。原创 2024-09-14 07:15:00 · 802 阅读 · 40 评论 -
【C++标准库函数总结】常用标准库函数汇总
本文对 C++ 标准库中常用的函数和类进行了详细的汇总和介绍,涵盖了输入输出、字符串处理、数学计算、容器、算法、日期和时间处理以及多线程编程等方面。这些标准库函数和类为 C++ 开发者提供了强大的工具,能够大大提高开发效率和代码质量。然而,C++ 标准库非常庞大且功能丰富,本文只是介绍了其中的一部分。在实际开发中,可以根据具体需求深入学习和运用标准库的其他功能。原创 2024-09-13 12:28:33 · 1592 阅读 · 29 评论 -
【C++11】线程创建于管理(std::thread)详解
本文详细阐述了如何使用std::thread构造函数创建线程,包括传递函数、函数指针、成员函数、lambda表达式等作为线程的执行体。同时,介绍了线程管理的核心方法,包括join()用于等待线程结束,detach()用于分离线程使其独立运行,以及joinable()用于检查线程是否可被join或detach。原创 2024-09-14 07:30:00 · 3188 阅读 · 27 评论 -
【C++】引用(References)
C++引用是对已存在变量的别名,不占用新内存空间,与变量共用内存。主要用于函数参数和返回值,提高效率和代码可读性。引用初始化后不可变,且需初始化,本质为指针常量。原创 2024-09-11 21:01:20 · 4375 阅读 · 33 评论 -
【C++】智能指针
C++智能指针详尽介绍原创 2024-09-08 16:23:58 · 1391 阅读 · 27 评论 -
C/C++内存操作函数&字符串操作函数差异与注意事项概览
在C和C++中,内存操作函数如malloc/free、new/delete、memcpy、memmove、memset等的使用非常普遍,但它们在C和C++中的用法和注意事项有一些细微的差别。本文详细讲解c/c++使用中的区别及注意事项的对比。原创 2024-09-03 09:16:55 · 803 阅读 · 32 评论 -
【C++特殊工具与技术】固有的不可移植的特性(3)::extern“C“
在C++与C的混合编程中,extern "C"是解决二进制兼容性的关键桥梁,它处理了C++名称修饰带来的链接难题,实现了两种语言的无缝协作。原创 2025-06-27 09:00:00 · 7151 阅读 · 30 评论 -
【C++特殊工具与技术】固有的不可移植的特性(2):volatile限定符
在硬件交互、信号处理和嵌入式开发中,volatile是C++程序员与编译器优化博弈的关键武器,它强制编译器按代码顺序执行每次内存访问,确保程序行为在特殊环境下的可预测性。原创 2025-06-25 08:52:55 · 1407 阅读 · 40 评论 -
【C++特殊工具与技术】固有的不可移植的特性(1):位域
在嵌入式开发、网络协议解析和硬件交互等场景中,位域(Bit-field)是C++程序员手中的一把精密手术刀,它能让我们以比特为单位精确操控内存空间。原创 2025-06-23 00:15:00 · 1654 阅读 · 30 评论 -
【C++特殊工具与技术】局部类
在 C++ 的类体系中,除了全局类、嵌套类(在类内部定义的类),还有一种特殊的存在 ——局部类(Local Class)。它像函数内部的 “封闭王国”,作用域严格限制在所属函数内,既拥有类的封装特性,又受限于函数的上下文环境。原创 2025-06-21 09:15:00 · 1238 阅读 · 39 评论 -
【C++特殊工具与技术】联合:节省空间的类
在 C++ 的类体系中,除了我们熟悉的struct和class,还有一种特殊的类类型 ——联合(Union)。它就像内存中的 “共享公寓”,所有成员共用同一块存储空间,这种特性让它在需要节省内存的场景中大放异彩。原创 2025-06-19 09:04:03 · 2911 阅读 · 25 评论 -
【C++特殊工具与技术】嵌套类
掌握嵌套类后,可以更灵活地设计 C++ 类结构,尤其是在需要隐藏实现细节、集中管理关联功能的场景中。当然,在实际开发中需权衡嵌套深度和代码复杂度,避免过度设计。原创 2025-06-17 08:45:00 · 1699 阅读 · 34 评论 -
【C++特殊工具与技术】类成员的指针
在 C++ 编程中,指针是操作内存的核心工具。除了我们熟悉的指向对象或变量的普通指针外,还有一种特殊的指针类型 ——类成员指针(Pointer to Class Members)。它允许我们在不绑定具体对象的情况下,指向类的成员(数据成员或成员函数),并在运行时动态访问这些成员。这种特性在框架设计、反射机制、状态机等场景中有着不可替代的作用。原创 2025-06-15 09:09:27 · 1049 阅读 · 35 评论 -
【C++特殊工具与技术】优化内存分配(六):运行时类型识别
运行时类型识别(Runtime Type Identification, RTTI)是 C++ 标准提供的一组机制,允许程序在运行时获取对象的类型信息。RTTI 主要用于处理多态场景下的类型判断,是面向对象编程中解决类型转换、动态分发等问题的重要工具。原创 2025-06-13 09:00:00 · 1371 阅读 · 22 评论 -
【C++特殊工具与技术】优化内存分配(五):显式析构函数的调用
合理使用显式析构函数调用,可以提升内存管理的灵活性和性能(如内存池、资源重用),但需严格遵循使用规范,避免未定义行为。在大多数情况下,应优先依赖编译器自动调用析构函数,仅在必要时使用显式调用。原创 2025-06-11 09:00:00 · 1526 阅读 · 31 评论 -
【C++特殊工具与技术】优化内存分配(四):定位new表达式、类特定的new、delete表达式
在 C++ 中,内存管理是性能优化和资源控制的核心。除了标准的new/delete操作符外,C++ 还提供了两种高级机制:定位 new 表达式(Placement New)和类特定的new/delete表达式(Class-specific new/delete)。原创 2025-06-09 23:00:00 · 1030 阅读 · 23 评论 -
【C++特殊工具与技术】优化内存分配(三):operator new函数和opertor delete函数
内存管理是 C++ 的核心能力之一,而operator new和operator delete作为内存分配的底层接口,是理解 C++ 对象生命周期的关键。原创 2025-06-08 09:15:00 · 1105 阅读 · 27 评论 -
【C++特殊工具与技术】优化内存分配(二):allocator类
本文将从allocator的核心机制出发,结合代码,深入解析其在管理类成员数据、对象构造 / 销毁、内存重新分配等场景中的应用。原创 2025-06-07 09:00:00 · 948 阅读 · 20 评论 -
【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
本文详细介绍了 C++ 中的内存分配相关知识,包括栈内存和堆内存的分配方式、new和delete操作符的使用、内存泄漏和悬空指针问题,以及智能指针在动态内存管理中的应用。合理选择和使用内存分配方式,正确处理内存管理问题,对于编写高效、稳定的 C++ 程序至关重要。在实际编程中,应根据具体需求选择合适的内存管理策略,充分利用 C++ 提供的内存管理工具,提高程序的质量和性能。原创 2025-06-06 09:00:00 · 1641 阅读 · 16 评论 -
【C++高级主题】虚基类的声明
C++ 引入了 虚基类(Virtual Base Class)机制。通过在继承时使用virtual关键字,让多个派生类共享同一个基类的实例,从而消除数据冗余和访问二义性。原创 2025-06-05 08:45:00 · 1207 阅读 · 24 评论 -
【C++高级主题】虚继承
在 C++ 面向对象编程中,多重继承(Multiple Inheritance)允许一个类继承多个基类的特性,这在设计复杂系统(如 “可序列化”+“可绘制” 的图形组件)时非常有用。但多重继承也带来了一个经典问题 ——菱形继承(Diamond Inheritance):当派生类通过不同路径继承同一个公共基类时,公共基类会在派生类中生成多份实例,导致数据冗余和访问二义性。原创 2025-06-04 09:00:00 · 1913 阅读 · 15 评论 -
【C++高级主题】多重继承下的类作用域
在 C++ 中,多重继承(Multiple Inheritance)允许一个派生类同时继承多个基类的特性,这在设计复杂系统(如 “可序列化”+“可绘制” 的图形组件)时提供了强大的灵活性。但随之而来的挑战是:多个基类的作用域重叠可能导致名字冲突(二义性,Ambiguity),例如两个基类拥有同名的成员变量或函数。原创 2025-06-03 09:00:00 · 1543 阅读 · 16 评论 -
【C++高级主题】转换与多个基类
在 C++ 的面向对象编程中,多重继承允许一个类同时继承多个基类的特性,这在实现复杂接口(如 “可绘制”+“可交互” 组件)或复用多组独立功能时非常有用。但随之而来的挑战是:当派生类对象被转换为不同基类的指针或引用时,如何确保虚函数调用的正确性?多个基类的虚析构函数如何协同工作?原创 2025-06-02 22:20:10 · 972 阅读 · 22 评论 -
【C++高级主题】多重继承
在 C++ 的面向对象编程中,继承(Inheritance)是实现代码复用和类型扩展的核心机制。我们熟悉的 “单继承”(Single Inheritance)允许一个派生类从一个基类继承属性和方法,但现实中的复杂场景往往需要更灵活的模型 —— 例如,一个 “智能手表” 类可能需要同时继承 “计时器”(Timer)和 “通信模块”(Communication)两个独立的基类。这时,C++ 提供的多重继承(Multiple Inheritance)就能大显身手。原创 2025-06-02 09:00:00 · 1341 阅读 · 17 评论 -
【C++高级主题】命令空间(六):重载与命名空间
在 C++ 中,函数重载(Overload)是实现多态的重要手段,允许同一作用域内同名函数通过不同的参数列表区分。然而,当函数分布在不同命名空间中时,重载的规则变得更为复杂 —— 命名空间的作用域规则、using声明 / 指示的引入机制,以及实参相关查找(ADL)会共同影响重载集的构成。原创 2025-06-01 08:45:00 · 2029 阅读 · 23 评论 -
【C++高级主题】命令空间(五):类、命名空间和作用域
在 C++ 中,类(Class)、命名空间(Namespace)与作用域(Scope)是代码组织的三大核心机制。它们既相互独立,又深度关联:类定义作用域,命名空间管理名称冲突,而作用域规则则决定了名称(如变量、函数、类)的可见性。本文将聚焦两个关键交叉点:实参相关的查找(Argument-Dependent Lookup, ADL)与隐式友元声明的命名空间规则,深入解析三者的交互逻辑。原创 2025-05-31 08:32:10 · 1182 阅读 · 17 评论 -
【C++高级主题】命令空间(四):命名空间成员的使用
在 C++ 中,命名空间(Namespace)是组织代码的核心工具,它通过逻辑分组避免命名冲突,提升代码的可维护性。但如何高效、安全地使用命名空间中的成员,却是一门 “细活”。本文将围绕 using声明 (using declaration)、命名空间别名(namespace alias)、using指示(using directive)三大核心机制展开,深入解析命名空间成员的使用规则与最佳实践。原创 2025-05-30 09:00:00 · 1732 阅读 · 30 评论 -
【C++高级主题】命令空间(三):未命名的命名空间
在 C++ 编程中,命名空间(Namespace)是组织代码的重要工具,它能有效避免命名冲突,提高代码的可维护性。在前面的文章中,我们已经介绍了命名空间的基本概念和常见用法。本文将深入探讨一种特殊的命名空间 —— 未命名的命名空间(Unnamed Namespace),它在 C++ 中有着独特的用途和行为。原创 2025-05-29 08:30:00 · 1611 阅读 · 18 评论 -
【C++高级主题】命令空间(二):嵌套命名空间
在 C++ 编程中,嵌套命名空间(Nested Namespace)是组织大型项目代码的重要工具。它允许开发者在命名空间内部定义新的命名空间,形成层次化的逻辑结构,从而更清晰地管理代码组件。原创 2025-05-28 08:56:53 · 1393 阅读 · 21 评论 -
【C++高级主题】命令空间(一):命令空间的定义
本文深入探讨了C++中命名空间的定义、作用域、使用方法、接口与实现的分离、不连续性、全局命名空间等多个方面,并结合可运行的代码示例,帮助读者全面掌握了命名空间的高级用法。命名空间作为C++中一种强大的组织代码和防止命名冲突的机制,对于大型项目和复杂的代码库来说至关重要。原创 2024-09-07 13:53:00 · 1292 阅读 · 23 评论 -
【C++高级主题】异常处理(五):异常说明
在 C++ 的异常处理体系中,异常说明(Exception Specification) 曾是一种用于声明函数可能抛出哪些异常的机制。从 C++98 引入到 C++17 弃用,异常说明经历了多次变革,其设计初衷与实际效果的差距引发了诸多争议。原创 2025-05-27 09:00:00 · 1184 阅读 · 29 评论 -
【C++高级主题】异常处理(四):auto_ptr类
在C++98标准中引入的auto_ptr是第一个智能指针实现,虽然它已在C++11中被正式弃用,但理解其设计原理和运作机制对于掌握现代C++内存管理思想具有重要价值。原创 2025-05-26 22:45:00 · 1835 阅读 · 32 评论 -
【C++高级主题】异常处理(三):自动资源释放
在C++的世界里,异常处理是构建健壮、可靠软件系统的基石。它允许我们在程序执行过程中捕获和处理意外情况,防止程序崩溃或进入不可预测的状态。然而,仅仅捕获异常还远远不够,我们还需要确保在异常发生时,程序能够正确地释放已分配的资源,避免资源泄漏,保证程序的稳定性和资源利用率。这就是我们今天要深入探讨的主题——自动资源释放,以及它在C++异常处理中的核心地位。原创 2025-05-25 08:45:00 · 916 阅读 · 46 评论 -
【C++高级主题】异常处理(二):异常类层次
C++ 的异常处理机制通过异常类层次结构(Exception Class Hierarchy)提供了一种结构化的错误处理方式。标准库定义了一套完整的异常类体系,同时允许用户自定义异常类以满足特定需求。原创 2024-09-07 12:21:44 · 1307 阅读 · 15 评论 -
【C++高级主题】异常处理(一)
在C++编程中,异常处理是一项至关重要的机制,它允许程序在遇到错误或异常情况时,能够优雅地处理这些情况,而不是直接崩溃或产生未定义行为。本文将从函数抛出类类型的异常、异常的捕获与重新抛出、捕获所有异常的处理、函数测试块(try块)与构造函数的异常安全等多个方面,深入探讨C++异常处理的高级主题,并提供详细的代码示例。原创 2024-09-07 17:33:59 · 1499 阅读 · 24 评论 -
【C++模板与泛型编程】重载与函数模板
在C++编程中,重载操作符与函数模板是两项极为强大且灵活的特性。它们不仅增强了代码的可读性和复用性,还使得开发者能够更自然地表达算法逻辑。本文将从函数重载与函数模板的基本概念出发,深入探讨它们的实现方式、匹配规则以及实际应用场景,并结合代码示例进行详细讲解。原创 2025-05-24 08:56:21 · 721 阅读 · 30 评论 -
【C++模板与泛型编程】模板特化
C++ 模板是泛型编程的核心工具,它允许我们编写与类型无关的代码。然而,在某些情况下,通用的模板实现可能无法满足特定类型的需求,这时就需要使用模板特化(Template Specialization)。模板特化允许我们为特定类型提供定制的实现,同时保留模板的通用性。原创 2025-05-23 09:00:00 · 1141 阅读 · 46 评论