自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(148)
  • 收藏
  • 关注

原创 11. 文件系统

本文系统介绍了Linux ext2文件系统的核心结构与工作原理。主要内容包括:1. 文件系统宏观结构:采用块组(Block Group)组织磁盘空间,每个块组包含超级块、块组描述符表、位图、inode表和数据块。超级块存储全局元数据并采用多备份策略保证容错。 inode机制:文件属性与内容分离存储,inode记录元数据和数据块指针,文件名存储在目录项中。通过inode编号实现分区内快速定位,详细解析了inode查找过程。 目录与路径解析:目录作为特殊文件存储"文件名-inode"映射,路

2026-08-02 09:30:09 382

原创 10. 硬件、初步文件系统

本文主要介绍了磁盘硬件结构和文件系统的基本概念。从磁盘的物理结构(盘片、磁头、磁道、扇区)到逻辑结构(CHS/LBA寻址),再到文件系统的组织方式(分区、块、inode节点)。重点阐述了磁盘如何通过柱面、磁头、扇区定位数据,以及操作系统如何将磁盘抽象为线性数组进行管理。同时解释了文件系统中块的概念、分区的原理,以及inode节点如何存储文件元数据。这些知识为理解操作系统如何管理磁盘存储提供了基础框架。

2026-08-02 09:29:11 212

原创 9. 缓冲区

文章摘要 本文探讨了Linux中“一切皆是文件”的设计哲学及其实现机制。通过struct file结构体中的函数指针,系统调用(如read/write)可统一访问不同硬件设备,屏蔽底层差异。缓冲区机制是关键:用户态缓冲区(C库维护)和内核缓冲区(pagecache)分别优化I/O效率,但close(fd)过早关闭会导致数据丢失。实验显示,系统调用write直接操作内核缓冲区,不受用户态缓冲区影响;而printf等库函数依赖刷新策略(行缓冲/全缓冲),fork()会复制未刷新的缓冲区,导致重复输出。最后,通过

2026-07-28 21:06:11 273

原创 8. 基础 IO

本文系统介绍了Linux系统中的文件操作机制,从概念理解到实际应用层层递进。首先阐述了文件的本质是属性(元数据)和内容的集合,所有操作最终都通过系统调用实现。然后对比了C语言标准I/O和系统I/O两种文件操作方式,重点解析了文件描述符的底层原理——它是进程文件表数组的索引,通过这个索引可以快速定位内核中的文件结构体。文章详细演示了文件读写、描述符分配规则和重定向操作,揭示了printf等函数与文件描述符的关系。最后通过dup2函数实验展示了重定向的实质是文件描述符的复制与替换,为理解Linux I/O机制提

2026-07-28 21:05:42 252

原创 7. 进程控制

本文系统讲解了Linux进程管理的核心概念和技术,主要包括:1. 进程创建:详细解析fork()系统调用,包括其返回值机制和写时拷贝技术(COW)的实现原理,说明父子进程如何共享资源并保持独立性。2. 进程终止:分析进程退出的三种场景(正常/异常终止),对比exit()和_exit()函数的区别,重点说明缓冲区刷新机制和退出码的获取方法。3. 进程等待:介绍wait()和waitpid()系统调用,解析如何通过status参数获取子进程退出状态,包括正常退出码和异常终止信号,并说明阻塞与非阻塞等待的实现差异

2026-07-19 13:56:39 330

原创 6. 程序地址空间

本文深入探讨了Linux操作系统中的虚拟内存管理机制,重点分析了进程地址空间的布局与转换原理。文章首先通过示例程序展示了不同类型变量在虚拟地址空间中的分布规律,包括代码段、数据段、堆栈等区域。随后通过父子进程共享变量的实验,揭示了虚拟地址与物理地址的映射关系,并详细阐述了页表机制和写时拷贝(Copy-on-Write)技术的工作原理。文章还深入解析了mm_struct和vm_area_struct等内核数据结构,说明了操作系统如何通过惰性加载、缺页中断和换出机制实现高效的内存管理。最后对比了普通进程与内核线

2026-07-19 13:53:59 467

原创 5. 环境变量

本文主要探讨了环境变量和命令行参数的基本概念及其在操作系统中的应用。文章首先解释了环境变量的全局特性及其在程序编译链接中的作用,随后详细介绍了main函数的真实形态及其命令行参数(argc和argv)的使用方法,并通过代码示例展示了如何利用命令行参数实现不同功能。接着,文章深入分析了系统命令与用户自定义程序执行路径的区别,引出环境变量PATH的重要性,并演示了如何修改PATH以直接运行自定义程序。此外,还介绍了常见环境变量(如HOME、SHELL等)及其查看方法,通过代码示例展示了如何通过程序获取和操作环境

2026-07-16 11:09:43 192

原创 4. 进程优先级、进程切换与进程切换

本文摘要: 文章系统讲解了Linux进程优先级及其管理机制。首先介绍了优先级概念(PRI和NI值),指出优先级数值越小级别越高,并演示了通过top和renice命令修改优先级的方法(范围-20到19)。其次,解析了进程切换的底层原理,强调CPU通过保存/恢复寄存器上下文实现任务切换。最后,深入剖析Linux 2.6内核调度策略,包括: 使用140维数组实现O(1)调度算法,数组下标映射优先级(PRI=80时对应下标120); 采用位图(bitmap)快速定位非空队列; 通过active/expired双队列

2026-07-16 11:09:19 366

原创 3. 进程状态

本文系统介绍了Linux进程管理机制,主要内容包括:1. 经典进程状态模型及其转换关系(运行、就绪、阻塞、挂起等状态);2. Linux内核链表实现原理,重点解析了通过list_head节点反向定位宿主结构体的container_of机制;3. Linux特有的进程状态(R运行、S睡眠、D磁盘休眠、T停止、Z僵尸等)及其代码示例;4. 特殊进程场景分析,包括僵尸进程的内存泄漏问题和孤儿进程的init领养机制。文章结合代码示例和命令行操作,深入浅出地讲解了进程调度、阻塞/挂起区别、状态转换等核心概念,并详细剖

2026-07-14 10:12:33 296

原创 2. 进程的基本概念和初步使用 fork 函数

本文主要介绍了进程的基本概念和Linux系统中进程管理的核心机制。首先阐述了进程作为操作系统并发执行基本单位的重要性,并解释了进程控制块(PCB/task_struct)作为进程唯一标识的关键作用。然后通过命令行(ps/proc)和代码示例(getpid/getppid)演示了如何查看进程信息。重点讲解了fork()系统调用,分析了其工作原理:通过复制父进程创建子进程,采用写时拷贝机制实现数据隔离。文章详细探讨了fork()的特殊行为,包括一个函数返回两次、父子进程获得不同返回值的原因,以及通过if-els

2026-07-14 10:11:56 158

原创 初步了解操作系统

本文主要介绍了冯诺依曼体系结构和操作系统的基本概念。在冯诺依曼体系中,计算机由输入设备、输出设备、存储器和中央处理器组成,数据通过CPU进行处理和传输。文章以QQ软件为例,说明了数据如何在内存、CPU和外设之间流动,并解释了内存作为媒介的必要性。操作系统部分阐述了其作为软硬件管理者的角色,通过"先描述后组织"的方式管理系统资源。最后,以银行办事流程为比喻,解释了系统调用的工作原理及其重要性,强调了系统调用在保障安全性和简化使用方面的作用。

2026-07-12 22:37:40 257

原创 十六、类型转换

本文介绍了C++中的类型转换机制,主要包括:1. C语言支持的隐式和显式类型转换;2. C++新增的自定义类型转换,通过构造函数和operator实现;3. C++四种显式强制类型转换运算符:static_cast(基本类型转换)、reinterpret_cast(底层位模式转换)、const_cast(去除const属性)和dynamic_cast(安全向下转换);4. RTTI(运行时类型识别)机制,通过typeid和dynamic_cast实现。文章通过代码示例详细说明了各种转换的使用场景和注意事项,

2026-07-12 08:30:00 180

原创 十四、异常

本文是C++异常处理机制的复习专题,主要介绍了异常的概念、格式和使用方法。首先对比了C语言传统的错误处理方式(如终止程序、返回错误码)的局限性,然后详细讲解了C++异常处理的throw、try和catch机制。文章重点阐述了异常的抛出与捕获规则、栈展开过程、异常重新抛出、异常安全问题以及异常规范(noexcept关键字)。最后分析了标准库异常体系结构,并总结了异常的优缺点:优点在于能清晰展示错误信息、简化错误处理流程;缺点包括执行流混乱、潜在性能开销和资源管理复杂性。作者建议在工程中合理使用异常处理机制。

2026-07-11 23:56:58 199

原创 十五、智能指针

本文介绍了C++智能指针的使用原理及实现方式。主要内容包括:1. 智能指针通过RAII机制管理资源,利用对象生命周期自动释放内存,解决了内存泄漏问题。2. C++标准库提供了四种智能指针:auto_ptr(已弃用)、unique_ptr(独占所有权)、shared_ptr(共享所有权)和weak_ptr(解决循环引用)。3. 详细分析了每种智能指针的实现原理:auto_ptr通过所有权转移、unique_ptr禁止拷贝、shared_ptr使用引用计数、weak_ptr不增加引用计数。4. 讨论了share

2026-07-11 23:56:36 363

原创 十三、C++lambda表达式和包装器

本文介绍了C++中lambda表达式和function/bind包装器的使用。主要内容包括:1. lambda表达式:匿名函数语法、捕获列表(值/引用/隐式捕获)、mutable修饰符,底层实现为仿函数。2. function包装器:统一可调用对象类型,支持函数指针、仿函数、lambda等,简化代码复用。3. bind包装器:参数绑定和顺序调整,可固定参数或改变传参顺序。这些特性能提高代码简洁性和可读性,实现灵活的函数调用方式。

2026-07-11 23:46:15 417

原创 十二、C++11可变参数模版

本文介绍了C++11中的可变模板参数特性,重点讲解了函数模板的可变参数使用。主要内容包括:1)可变参数模板的定义方法,通过sizeof计算参数个数;2)两种参数包展开方式:递归展开(需定义终止函数)和逗号表达式展开;3)STL容器中emplace系列接口的使用,对比了其与push系列接口的性能差异,指出emplace在传入参数包时能避免中间拷贝,效率更高。文章通过代码示例详细演示了各种用法,并借助自定义string类验证了不同传参方式下的构造函数调用情况。

2026-07-11 23:45:26 258

原创 从零手写高性能C++ TCP 服务器框架(十八) --- Http的相关测试

本文介绍了从零构建的高性能C++ TCP服务器框架HTTP功能测试方案。通过设计七类针对性测试用例(长连接、超时释放、数据不完整、业务超时、批量请求、大文件传输和压力测试),全面验证了HTTP服务器框架的核心功能。测试使用自定义TCP客户端直接与服务器交互,覆盖连接管理、协议解析、异常处理等关键场景。结果表明:框架能正确处理keep-alive连接和超时释放;状态机健壮性良好,可应对不完整请求和粘包;业务超时不会影响其他连接;支持大文件完整传输;在当前2核2G环境下具备良好的并发性能。这些测试为框架的稳定性

2026-06-10 08:00:00 261

原创 从零手写高性能C++ TCP 服务器框架(十七) --- HttpContext和HttpServer实现

本文介绍了一个从零手写的高性能C++ TCP服务器框架,重点实现了HTTP协议解析器HttpContext和HTTP服务器HttpServer。主要内容包括: 架构设计 采用解析与业务分离的设计,HttpContext负责协议解析,HttpServer处理业务路由和响应 基于状态机的增量解析机制,支持网络数据分片到达 正则表达式路由表,支持动态参数捕获 核心功能 HttpContext实现HTTP/1.1协议的请求行、头部和正文解析 HttpServer整合静态文件服务、动态路由分发和响应发送 自动管理长短

2026-06-09 08:00:00 266

原创 从零手写高性能C++ TCP 服务器框架(十六) --- HttpResponse和HttpRequest实现

本文介绍了从零手写C++ TCP服务器框架中的HttpRequest和HttpResponse实现。这两个类分别用于存储HTTP请求和响应数据,为后续HTTP协议处理奠定基础。HttpRequest保存请求方法、路径、头部、参数等,提供便捷的查询接口;HttpResponse管理状态码、响应头和正文,支持重定向设置。两者都采用unordered_map存储头部和参数,实现O(1)查找效率,并根据Connection头部判断长短连接。文章详细阐述了类的设计思路、接口定义和关键实现代码,为构建完整的HTTP服务

2026-06-08 08:30:00 217

原创 从零手写高性能C++ TCP 服务器框架(十五) --- Util工具实现

本文介绍了在C++ TCP服务器框架中实现Util工具类的设计与实现。该工具类为HTTP服务器提供了一系列静态方法,包括字符串分割、文件读写、URL编解码、状态码与MIME类型映射、文件属性判断和路径安全性校验等功能。通过使用C++标准库实现,避免第三方依赖,采用unordered_map存储映射关系提高查询效率,并严格按照RFC3986规范处理URL编解码。工具类采用完全静态设计,所有方法无状态,可直接调用,提升了代码复用性和可维护性,为后续HTTP服务器的组装提供了必要的工具支持。

2026-06-07 09:00:00 783

原创 从零手写高性能C++ TCP 服务器框架(十四) --- HTTP模块介绍

本文介绍为高性能TCP服务器框架添加HTTP协议支持的模块设计。**Util模块**提供URL编解码、文件读写等工具函数。**HttpRequest**和**HttpResponse**分别保存解析后的请求信息与待发送的响应数据。**HttpContext**管理请求接收过程中的解析状态,处理TCP粘包/半包问题,确保能从不完整数据中逐步还原完整请求。**HttpServer**是对外暴露的门面类,内部封装TcpServer,通过哈希表存储请求路径到处理函数的映射,并在连接建立时设置上下文。

2026-06-06 08:00:00 384

原创 从零手写高性能C++ TCP 服务器框架(十三) --- TcpServer实现

本文实现了 TCP 服务器框架的最终模块 TcpServer,它将 Acceptor、EventLoop、LoopThreadPool、Connection 等组件封装为统一“门面”。TcpServer 自动管理监听套接字、线程池和所有活跃连接,处理新建连接的线程分配、回调注册、非活跃超时销毁及安全移除。内部使用自增 ID 复用为连接与定时器 ID,通过 RunInLoop 保证线程安全,并全局忽略 SIGPIPE 信号。用户仅需设置线程数与连接建立、消息到达、连接关闭等回调,调用 Start() 即可启动

2026-06-05 08:00:00 487

原创 从零手写高性能C++ TCP 服务器框架(十二) --- Acceptor、LoopThread以及 LoopThreadPool 实现

本文实现了 TCP 服务器框架中的连接接收与多线程管理模块。Acceptor 封装监听套接字,通过 HandleRead 接收新连接并回调传递 newfd,与业务逻辑解耦。LoopThread 解决 EventLoop 必须在所属线程内创建的问题,线程入口函数中实例化 EventLoop 并启动循环,利用互斥锁和条件变量保证 GetLoop 时对象已就绪。LoopThreadPool 管理一组 LoopThread,提供 SetThreadCount、Create 和轮询的 NextLoop 接口.....

2026-06-04 08:00:00 314

原创 从零手写高性能C++ TCP 服务器框架(十一) --- Connection实现

本文实现 TCP 服务器框架的核心模块 Connection,对一条 TCP 连接进行全生命周期管理。Connection 封装了文件描述符、Socket、Channel、双缓冲区(输入/输出)以及四个业务回调(连接建立、消息到达、连接关闭、任意事件)。内部定义了 DISCONNECTED、CONNECTING、CONNECTED、DISCONNECTING 四种状态,并实现状态机的安全迁移。

2026-06-03 08:00:00 428 1

原创 从零手写高性能C++ TCP 服务器框架(十) --- EventLoop 和TimerWheel联调

本文详细讲解了如何将时间轮定时器(TimerWheel)无缝集成到事件循环(EventLoop)中,构建单线程、非阻塞的高性能 TCP 服务器框架。核心设计是利用 Linux 的 `timerfd` 创建周期性文件描述符,作为 `Channel` 注册到 `epoll`,在可读回调中驱动时间轮推进并执行到期任务;同时所有定时器操作(增加、刷新、取消)均通过 `RunInLoop` 投递到事件循环线程执行,确保线程安全且无需加锁。最终实现了 I/O 事件与定时任务在同一线程中的高效融合,并通过示例代码验证了连

2026-06-02 08:00:00 252

原创 从零手写高性能C++ TCP 服务器框架(九) --- EventLoop 实现

本文介绍了基于C++的高性能TCP服务器框架中EventLoop模块的实现。EventLoop是事件驱动模型的核心组件,通过eventfd实现跨线程唤醒机制,结合Poller进行IO多路复用监控。关键特性包括:1) 使用eventfd创建非阻塞事件通知通道;2) 实现线程绑定的任务队列,确保所有IO操作在指定线程执行;3) 提供RunInLoop/QueueInLoop接口实现线程安全的任务调度。EventLoop工作流程分为事件监控、事件处理和任务执行三个阶段,通过eventfd的读写操作实现跨线程唤醒。

2026-06-01 08:00:00 188

原创 从零手写高性能 C++ TCP 服务器框架(八):时间轮定时器实现

本文介绍了高性能C++ TCP服务器中时间轮定时器的实现方案。针对海量连接场景下的定时任务管理,对比了三种方案:数组遍历(O(N)复杂度)、小根堆(O(logN)插入删除)和时间轮(O(1)操作)。重点阐述了时间轮的设计思想,通过环形数组和指针推进模拟时钟机制,使用shared_ptr和weak_ptr解决任务生命周期管理问题。具体实现包括TimerTask封装定时任务、TimerWheel核心逻辑(添加/刷新/取消任务)以及测试代码验证。时间轮以空间换时间,显著提升了TCP服务器处理超时断连、心跳检测等场

2026-05-31 08:00:00 579

原创 从零手写高性能 C++ TCP 服务器框架(七):Channel模块和Poller模块实现

本文介绍了基于epoll的高性能C++ TCP服务器框架中Channel和Poller模块的实现。主要内容包括: Channel模块作为事件管理的桥梁,将文件描述符、监控事件和回调函数绑定在一起,实现了事件驱动的异步编程模型。它提供了事件注册/注销接口,并通过shared_ptr管理生命周期确保线程安全。 Poller模块封装了epoll系统调用,包括epoll_create、epoll_ctl和epoll_wait等核心功能,实现了高效的事件监控机制。它支持水平触发和边缘触发两种模式,通过哈希表管理Cha

2026-05-30 08:00:00 843

原创 从零手写高性能 C++ TCP 服务器框架(六):封装Socket套接字实和日志宏

本文介绍了如何从零手写一个高性能C++ TCP服务器框架,重点讲解了日志宏封装和Socket套接字封装两个核心模块的实现。 在日志模块中,设计了一个简洁的日志宏系统,支持INF、DBG、ERR三种级别,输出格式包含线程ID、时间、文件名和行号等信息。通过预处理器宏和系统时间函数实现轻量级日志功能,避免了引入第三方库的复杂性。 Socket模块封装了TCP套接字的基本操作,包括创建、绑定、监听、连接等基础功能,并实现了健壮的数据收发处理,特别考虑了非阻塞模式和信号中断等特殊情况。此外还实现了地址复用、非阻塞设

2026-05-29 08:00:00 376

原创 从零手写高性能 C++ TCP 服务器框架(五):Buffer缓冲区实现

本文介绍了一个高性能C++ TCP服务器框架中的Buffer缓冲区实现。该Buffer模块采用vector<char>作为底层容器,相比string更适合处理二进制数据且具有更好的扩展性。核心设计包含读写索引管理、空间动态调整机制,提供写入、读取、按行操作等接口功能。实现特点包括:1) 使用双索引(_read_idx/_write_idx)高效管理缓冲区;2) 自动空间调整策略(移动数据或扩容);3) 支持二进制数据和字符串处理;4) 提供基于换行符的行读取功能。测试代码验证了缓冲区的正确性,展

2026-05-28 08:00:00 380

原创 从零手写高性能 C++ TCP 服务器框架(四):前置知识介绍

本文介绍了构建高性能C++ TCP服务器框架所需的四个关键前置知识:1. C++11的bind函数适配器,用于参数绑定和任务池设计;2. Linux的timerfd定时器机制,用于连接超时管理;3. 正则表达式在HTTP请求解析中的应用;4. Any通用类型容器的实现原理,用于协议上下文管理。这些技术分别解决了函数参数适配、连接超时控制、请求解析灵活性和协议无关上下文存储等核心问题,为构建高并发、低耦合的服务器框架奠定了基础。文章通过代码示例详细演示了各项技术的具体实现方式。

2026-05-27 08:00:00 402

原创 从零手写高性能 C++ TCP 服务器框架(三):服务器端模块介绍和模块关系图

本文介绍了一个基于Reactor模型的高性能C++ TCP服务器框架设计。框架分为Server和协议两大模块,其中Server模块包含多个子模块:Buffer模块实现用户态缓冲区功能;Socket模块封装套接字操作;Channel模块管理描述符IO事件;Connection模块整合上述模块管理通信连接;Acceptor模块管理监听套接字;TimerWheel模块实现定时任务管理;Poller模块封装epoll功能;EventLoop模块作为核心Reactor,整合Poller、TimerWheel等模块进行

2026-05-26 08:00:00 405

原创 从零手写高性能 C++ TCP 服务器框架(二):名词介绍

本文介绍了构建高性能C++ TCP服务器框架的关键概念。首先说明HTTP服务器本质是基于TCP的应用层协议实现。重点解析了Reactor模式的三种实现:单线程版简单但性能受限;多线程版利用CPU多核但存在并发瓶颈;主从多Reactor多线程版通过职责分离实现最优性能。最终目标定位为主从Reactor模型的"OneThreadOneLoop"架构,主Reactor专注新连接处理,子Reactor负责通信监控和业务处理,每个线程独立运行事件循环,从而构建高并发服务器框架。

2026-05-25 10:13:37 420

原创 从零手写高性能 C++ TCP 服务器框架(一):项目介绍

本文介绍了一个从零手写的高性能C++ TCP服务器框架项目。该项目基于Reactor模式,整合epoll多路复用、时间轮定时器和多线程线程池等核心技术,最终构建出支持HTTP协议的完整服务端框架。项目包含11个核心模块,代码量约1100行,实现了EchoServer和HTTPServer两个完整应用。文章详细阐述了项目技术栈(C++ STL、Linux系统编程、网络编程基础)、核心模块组成(Buffer、Socket、Channel等)以及学习收获(掌握Reactor模型、epoll使用、时间轮定时器等)。

2026-05-24 10:33:34 447

原创 十一、C++11列表初始化、右值引用和移动语义

本文是C++11新特性的复习专题,在列表初始化部分,介绍了C++11统一初始化语法和initializer_list容器的应用;右值引用章节详细解析了左值/右值概念、移动构造与移动赋值的实现原理,以及如何通过std::move转换左值为右值;引用折叠部分阐述了模板中的引用处理规则;完美转发章节则说明了如何用std::forward保持参数原始类型属性。文章通过大量代码示例演示了这些特性在字符串类等场景中的实际应用,特别强调了右值引用对深拷贝性能的优化作用。

2026-02-19 17:14:30 690

原创 十、C++多态

本文详细探讨了C++中的多态机制,包括多态的概念、定义与实现方式。重点分析了虚函数及其重写规则,介绍了协变和析构函数重写两种特殊情况,以及C++11引入的override和final关键字。文章深入剖析了多态的实现原理,通过虚函数表机制解释运行时多态行为,并对比了单继承和多继承情况下的虚表结构差异。同时介绍了纯虚函数和抽象类的概念,区分了接口继承与实现继承。通过代码示例和内存分析,展示了如何通过虚函数表实现动态绑定,为理解C++多态提供了全面的技术视角。

2026-02-14 09:57:44 669

原创 九、C++继承

本文总结了C++继承机制的核心知识点:1. 继承的概念与定义:通过Person、Student和Teacher类示例展示继承的代码复用特性,说明public/protected/private三种继承方式对成员访问权限的影响。2. 基类与派生类转换:派生类对象可切片赋值给基类指针/引用,反之则需强制类型转换。3. 作用域与隐藏:同名成员会隐藏基类成员,需用作用域限定符访问。4. 派生类默认成员函数:构造函数需显式调用基类构造,拷贝构造/赋值需调用基类对应函数,析构函数自动调用基类析构。

2026-02-13 08:46:24 586

原创 八、IO流

本文主要介绍了C++中的IO流相关知识,包括标准IO流、文件IO流和string IO流。首先讲解了IO流状态的四种标志位(goodbit/eofbit/failbit/badbit)及其处理方法,如使用cin.clear()恢复流状态。其次详细说明了输出缓冲区的管理机制。在文件操作方面,介绍了二进制和文本文件的读写方法,比较了app和ate模式的区别,并指出了二进制读写中string成员可能导致野指针的问题。最后展示了stringstream的使用方法,包括数据序列化和反序列化的实现。

2026-02-12 08:17:39 604

原创 七、模版进阶

本文总结了C++模板编程中的关键知识点:1. 非类型模板参数的使用场景和限制;2. 模板特化的概念和应用,包括函数模板特化、类模板全特化和偏特化;3. 模板分离编译的原理及解决方案;4. 模板编程的优缺点分析。文章以复习为目的,通过实例代码演示了模板参数、特化技术等核心概念,并解释了模板分离编译失败的原因及解决方法。适合已掌握C++基础语法的学习者进行知识回顾。

2026-02-11 15:27:35 602

原创 六、模版初阶

本文介绍了C++中的泛型编程和模板技术。主要内容包括:1. 函数模板的概念、格式和原理,通过模板实现代码复用;2. 函数模板的隐式和显式实例化方式,以及模板参数的匹配原则;3. 类模板的定义格式和使用方法,指出类模板需要在名称后加<>指定类型参数。文章通过交换函数和分数类的例子,展示了模板如何解决代码复用问题,并比较了模板函数与普通函数的区别。

2026-02-10 06:21:14 668

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除