C++
文章平均质量分 82
wefg1
keep coding
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【C++】线程库
本文系统介绍C++多线程编程:涵盖线程创建、join/detach、this_thread;深入讲解互斥锁(普通、递归、超时、自旋)及RAII管理,对比lock_guard与unique_lock;介绍atomic原子操作与CAS无锁编程;最后详解条件变量,包括生产者-消费者模型、核心API及注意事项,并给出交替打印的实现。原创 2026-08-31 14:31:45 · 212 阅读 · 0 评论 -
【C++】volatile 与 register
摘要:C++中volatile关键字用于防止编译器优化,确保变量访问直接读写内存而非寄存器缓存,常用于多线程或信号处理等可能被外部修改的场景。register关键字曾用于建议编译器将变量存储在寄存器中以提高访问速度,但在C++11后被弃用,因现代编译器已能自主优化寄存器分配,且该关键字存在诸多限制。两个关键字分别代表了防止优化和主动优化的不同思路,反映了编程语言与硬件发展的适配过程。(149字)原创 2026-02-24 15:34:59 · 345 阅读 · 0 评论 -
【C++】IO流
本文摘要:文章系统介绍了C/C++中的输入输出机制。在C语言部分,重点讲解了scanf()和printf()函数的使用方法及输入输出缓冲区的作用。C++部分详细阐述了流的概念及其特性,分析了标准IO流(cin/cout等)的工作原理和使用注意事项,包括类型转换和循环判断机制。同时介绍了文件IO流的操作流程,通过示例展示了二进制文件和文本文件的读写方法,并说明了C++流对内置类型和自定义类型的统一处理优势。文章内容由浅入深,涵盖了从基础概念到实际应用的关键知识点。原创 2025-11-29 15:41:52 · 1064 阅读 · 0 评论 -
【C++】类型转换(static/reinterpret/const/dynamic_cast)
C++类型转换机制解析 C++提供了两种类型转换方式:隐式转换(编译器自动完成)和显式强制转换。传统C风格强制转换存在可读性差、安全性低等问题。C++引入了四种新的类型转换操作符:static_cast用于相关类型转换,reinterpret_cast用于不相关类型的位模式重解释,const_cast用于去除const属性,dynamic_cast用于安全的向下转型(需父类含虚函数)。这些新转换方式提高了代码可读性和安全性,能有效避免越界访问等潜在问题。特别是dynamic_cast会在转换前进行检查,失败原创 2025-11-24 16:25:10 · 668 阅读 · 0 评论 -
【C++】特殊类设计
摘要:本文介绍了5种C++类的特殊设计方法:1)禁止拷贝的类(C++98/11实现);2)只能在堆上创建对象的类(通过私有构造函数或析构函数实现);3)只能在栈上创建对象的类(禁用new/delete运算符);4)不可继承的类(C++98私有构造函数或C++11 final关键字);5)单例模式(饿汉式和懒汉式实现)。每种方法都提供了代码示例和实现原理说明,涵盖了构造函数控制、运算符重载、静态成员等关键技术点,适用于不同场景下的特殊类设计需求。(149字)原创 2025-11-22 19:53:29 · 973 阅读 · 1 评论 -
【C++】智能指针(auto/unique/shared_ptr)
本文介绍了C++智能指针的核心概念和使用方法。首先阐述了使用智能指针的必要性,它能自动管理内存资源,避免内存泄漏问题。然后详细讲解了智能指针的RAII原理,以及auto_ptr、unique_ptr、shared_ptr等主要类型的实现机制。特别分析了shared_ptr的引用计数原理和循环引用问题,并介绍了weak_ptr的解决方案。最后讨论了定制删除器的实现方式,以处理特殊资源释放需求。智能指针通过对象生命周期自动管理资源,大大提高了C++内存管理的安全性和便利性。原创 2025-11-22 16:55:50 · 904 阅读 · 1 评论 -
【C++】C++11(右值引用/移动语义/lambda/可变模板参数/包装器)
C++11新特性摘要:C++11是继C++98/03后的重要更新,带来约140个新特性。主要改进包括:1) 统一的列表初始化语法,支持所有内置和自定义类型;2) 右值引用和移动语义,解决深拷贝效率问题;3) 自动类型推导(auto)和类型获取(decltype);4) lambda表达式简化匿名函数编写;5) 可变参数模板支持更灵活的泛型编程;6) 完美转发(std::forward)保持参数类型属性;7) 新增移动构造和移动赋值默认成员函数;8) 包装器(std::function)统一函数对象调用方式。原创 2025-11-12 16:12:42 · 817 阅读 · 0 评论 -
【C++】异常(try/catch)
本文系统介绍了C++异常处理机制。首先对比了C语言通过终止程序或返回错误码的传统错误处理方式,指出其局限性。重点阐述了C++异常概念,包括throw、catch、try关键字的使用方法,详细讲解了异常的抛出捕获规则、栈展开机制和重新抛出等特性。针对异常安全问题,提出了构造函数和析构函数中的异常处理建议。文章还介绍了自定义异常体系的设计方法,说明如何通过继承构建规范的异常类层次结构,并分析了C++标准库异常体系的不足。最后从优缺点两方面进行总结:异常能清晰传递错误信息、简化错误处理流程,但也存在执行流混乱、资原创 2025-08-14 17:37:40 · 1222 阅读 · 0 评论 -
【数据结构】C++的map和set
本文介绍了STL中关联式容器map和set的实现原理与使用方法。关联式容器通过键值对存储数据,采用红黑树作为底层结构,具有高效的数据检索能力。文章详细分析了set和map的特性:set存储唯一元素,map存储键值对;两者都支持迭代器遍历和使用insert操作。重点探讨了红黑树的实现机制,包括迭代器设计、插入操作处理,以及map和set在底层实现上的差异。通过模拟实现RBTree、set和map类,展示了关联式容器的核心功能,如元素插入、遍历和平衡维护。这些容器通过严格的有序存储和高效的查找性能,在C++编程原创 2025-08-14 10:24:16 · 1117 阅读 · 0 评论 -
【数据结构】C++的优先级队列(priority_queue)
本文介绍了优先级队列(priority_queue)的概念和特性。优先级队列是一种容器适配器,其首元素始终是最大值,底层通常使用vector实现堆结构。文章详细说明了优先级队列的使用方法,包括创建大堆和小堆的示例代码。重点讲解了仿函数的概念及其优势:保持状态、参数传递灵活、模板编程支持、内联优化和多态行为。最后提供了一个模拟实现的优先级队列代码框架,包含adjustup和adjustdown等关键操作来维护堆结构。该实现支持自定义容器类型和比较方式,展示了优先级队列的核心功能实现原理。原创 2025-08-08 14:35:19 · 785 阅读 · 0 评论 -
【数据结构】C++的stack和queue
本文介绍了三种重要的容器适配器:栈(stack)、队列(queue)和双端队列(deque)。栈基于LIFO原则实现,队列基于FIFO原则实现,都通过封装底层容器(vector、deque或list)提供特定操作。deque结合了vector和list的特性,支持两端高效操作(O(1))和随机访问(O(1)),但中间操作较慢(O(n))。相比vector,deque在两端操作和内存扩容方面更优;相比list,deque在内存利用率和随机访问上更优。文章还提供了stack和queue的简化实现代码,展示了它们原创 2025-08-07 20:21:20 · 742 阅读 · 0 评论 -
【C++】多态(虚函数/虚函数表/菱形)
【摘要】本文深入探讨了C++中的多态机制。多态分为静态多态(函数重载)和动态多态(虚函数重写+父类指针调用)。构成多态需要满足两个条件:通过基类指针/引用调用虚函数,且派生类必须重写基类虚函数。文章详细分析了虚函数表原理,指出虚函数表存储虚函数指针,同类对象共享同一虚表。通过单继承和多继承案例,演示了虚函数表的构成方式,并介绍了override和final关键字的使用。最后讨论了菱形虚拟继承下的多态处理及二义性解决方案。多态机制实现了运行时的动态绑定,使不同对象对同一行为表现出不同形态。原创 2025-08-02 14:06:24 · 954 阅读 · 0 评论 -
【C++】继承
本文系统介绍了C++继承机制的核心概念与应用。重点阐述了继承的定义方式、访问权限控制、对象赋值转换规则、作用域处理、派生类默认成员函数实现等关键技术要点。深入分析了菱形继承问题及其虚拟继承解决方案的原理,通过虚基表指针和偏移量实现数据共享。对比了继承(is-a)与组合(has-a)的差异,指出组合在耦合度和封装性方面的优势。最后反思了C++多继承带来的复杂性,建议谨慎使用以避免菱形继承问题。文章通过大量代码示例展示了继承机制的实际应用,为面向对象程序设计中的代码复用提供了系统指导。原创 2025-07-27 11:26:37 · 824 阅读 · 0 评论 -
【数据结构】C++的list
本文主要介绍了C++中list容器的使用和实现原理。文章首先讲解了list的构造函数、迭代器和常用操作,包括正向/反向迭代器、splice函数和remove函数的使用方法。重点分析了list迭代器失效问题,指出删除操作会导致指向被删除节点的迭代器失效,并给出了正确使用迭代器的示例代码。文章还通过对比vector容器,详细展示了list的模拟实现过程,包括节点类、迭代器类和list类的定义,涵盖了构造、析构、插入、删除等核心功能的实现细节。通过这段代码可以清晰地理解list作为双向循环链表的数据结构特点及其操原创 2025-07-21 18:02:13 · 471 阅读 · 0 评论 -
【数据结构】C++的vector
C++ vector容器详解 vector是C++标准库中的动态数组容器,相比原生数组,它能够自动管理内存并动态调整大小。vector内部使用连续存储空间,支持随机访问,在末尾插入/删除元素效率较高(O(1)),但在中间操作效率较低(O(n))。 核心特性: 动态扩容策略:vs按1.5倍增长,g++按2倍增长 迭代器失效问题:扩容、插入、删除等操作可能导致迭代器失效 常用操作:push_back/pop_back、insert/erase、sort排序等 模拟实现要点:三个指针标记存储空间(_start/_原创 2025-07-18 09:42:06 · 2825 阅读 · 0 评论 -
【数据结构】C++的string
本文详细介绍了C++中string类的常见用法和实现原理,主要内容包括: 字符串初始化:演示了空构造、字符串构造、字符填充构造等多种初始化方式 字符串操作:详细说明了增删改查、比较、拼接等常用操作,包括push_back、append、insert、erase等函数 字符串遍历:介绍了下标访问、迭代器遍历和范围for循环三种遍历方式 容量管理:讲解了reserve和resize函数的区别及使用场景 字符串查找:说明find和rfind函数的使用方法 类型转换:介绍了数字与字符串相互转换的to_string和原创 2025-07-16 14:46:41 · 1055 阅读 · 0 评论 -
【C++】迭代器
C++迭代器类型及实现机制概述 摘要:C++迭代器分为五类:输入迭代器(只读单向)、输出迭代器(只写单向)、前向迭代器(可读写多次遍历)、双向迭代器(支持前后移动)和随机访问迭代器(支持任意跳转)。高级别迭代器可替代低级别使用。迭代器实现上,连续内存容器(如vector)可能使用原生指针,而非连续容器(如list)需封装结构体重载操作符。范围for循环本质基于迭代器实现,编译时会转换为标准迭代器遍历形式。反向迭代器通过封装正向迭代器实现,++操作对应正向的--操作。operator->具有递归调用特性原创 2025-07-16 14:41:42 · 468 阅读 · 0 评论 -
【C++】模板(函数、类模板/非类型模板参数/特化)
本文系统介绍了C++模板编程的核心内容,主要包括:1. 函数模板:基本语法、实例化方式(隐式/显式)、参数匹配原则及注意事项;2. 类模板:定义格式、实例化特点、成员函数定义规范;3. 非类型模板参数的使用限制;4. 模板特化机制:函数模板特化步骤、类模板全特化与偏特化;5. 模板分离编译问题及其解决方案。文章通过具体代码示例,详细解析了模板编程中的常见问题与最佳实践,如类型推断规则、显式实例化场景、特化应用等核心概念,为掌握C++泛型编程提供了全面指导。原创 2025-05-31 11:57:38 · 1098 阅读 · 0 评论 -
【C++】内存管理(new/delete)
本文介绍了C++内存管理的核心概念,主要包括: 内存区域划分:栈(局部变量)、堆(动态分配)、数据段(全局/静态变量)和代码段(常量) C++内存管理方式:new/delete操作符的使用及与malloc/free的区别 内存泄漏的危害:长期运行程序的内存泄漏会导致性能下降甚至系统崩溃 new/delete相比malloc/free的优势在于自动调用构造/析构函数、类型安全、异常处理等特性。文章通过具体示例详细说明了各内存区域的特征、new/delete的实现原理以及不同内存分配方式的适用场景。原创 2025-05-18 18:49:00 · 862 阅读 · 0 评论 -
【C++】类和对象
本文系统介绍了C++中类与对象的核心概念,涵盖类的定义、访问限定符、实例化、存储方式等基础内容。重点讲解了this指针原理、六大默认成员函数(构造/析构/拷贝构造等)的实现细节,以及运算符重载、const成员函数等进阶特性。文章对比了struct与class的区别,深入探讨了初始化列表、静态成员、友元等关键概念,并通过栈类等实例说明封装思想。最后介绍了内部类和匿名类的特殊用法,帮助读者全面掌握面向对象编程中的类设计技巧。原创 2025-05-16 20:07:18 · 1127 阅读 · 0 评论 -
【C++】入门预备知识 (域/命名空间/cin/cout/重载/引用/auto/范围for/内联/nullptr)
域、命名空间、输入输出、缺省参数、函数重载、引用、auto、内联函数原创 2025-04-20 00:26:04 · 1216 阅读 · 0 评论
分享