自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Linux学习笔记】操作系统的路径缓冲与链接机制

本文介绍了Linux系统中文件查找与链接机制的核心原理。文件查找基于目录内容(文件名与inode映射),通过路径解析从根目录逐级定位。内核通过dentry结构维护目录树缓存加速访问。挂载机制实现多分区统一管理。软链接(ln -s)是独立快捷方式文件,可跨分区;硬链接(ln)是同一inode的别名,不能用于目录。系统自动创建的.和..是典型硬链接。理解这些机制有助于高效使用Linux文件系统,软链接适合创建快捷方式,硬链接可用于文件备份。文章通过对比软硬链接的特性与限制,帮助读者掌握关键差异与应用场景。

2026-03-06 13:26:00 491 2

原创 【Linux学习笔记】磁盘与文件系统

本文详细介绍了磁盘与文件系统的核心知识。主要内容包括:1)磁盘物理结构(盘片、磁头)和存储结构(扇区、磁道、柱面);2)CHS与LBA地址转换方式;3)文件系统关键概念:块、分区、inode;4)ext2文件系统结构,包括块组组成(Data Block、Inode Table、位图等)及其管理机制;5)inode与数据块的映射关系(12个直接指针+3级间接索引)。特别指出删除文件时只修改位图而非实际擦除数据的特点。通过系统化的讲解,帮助读者深入理解磁盘存储和文件系统的工作原理。

2026-03-06 12:47:49 549

原创 【Linux学习笔记】基础IO(下)

本文深入探讨了Linux基础IO中的重定向、缓冲区和"一切皆文件"概念。主要内容包括:1)重定向的本质是通过修改文件描述符表实现输入/输出方向的改变,可用dup2系统调用实现;2)Linux通过将硬件抽象为文件,使用统一接口访问所有设备;3)缓冲区分为语言级和文件级,用于减少系统调用提高效率,包含行缓冲、全缓冲和无缓冲三种类型;4)模拟实现了FILE结构体和相关操作函数。文章通过代码示例详细解析了这些核心概念的实现原理和应用场景。

2026-03-05 23:28:25 323

原创 【Linux学习笔记】基础IO(上)

本文介绍了Linux系统中的基础I/O操作,主要涵盖以下内容: 文件本质:文件=内容+属性,空文件也占用磁盘空间,磁盘属于外设 C语言文件操作:fopen/fclose打开关闭文件,fputc/fputs/fprintf写入,fgetc/fgets/fscanf读取 系统调用:open/close/read/write函数,使用文件描述符(fd)标识文件 文件描述符:本质是数组下标,默认0(stdin)、1(stdout)、2(stderr),按最小未使用规则分配 操作系统管理:通过struct file描

2026-03-04 23:30:21 363

原创 【Linux学习笔记】进程控制

本文介绍了Linux进程控制的核心知识点,包括进程创建、终止、等待和替换。主要内容有:1. 进程创建:通过fork函数创建子进程,实现写时拷贝机制;2. 进程终止:介绍了exit、_exit等退出方式及退出码含义;3. 进程等待:使用wait/waitpid解决僵尸进程问题并获取子进程状态;4. 进程替换:详细讲解exec系列函数实现程序替换的原理和使用方法。文章通过代码示例和原理分析,系统性地讲解了Linux进程控制的关键技术,最后提供了核心知识点速查表方便快速回顾。

2026-03-03 23:21:15 502

原创 【Linux学习笔记】 进程的地址空间

本文深入探讨了进程地址空间的概念与实现机制。通过父子进程实验发现,相同虚拟地址可能指向不同物理内存,验证了程序地址空间并非物理内存而是操作系统提供的虚拟视图。文章详细解析了Linux内核如何通过mm_struct结构体管理进程地址空间,包括区域划分、页表映射机制和写时拷贝技术。进程地址空间的核心作用包括:将物理内存无序地址转化为有序虚拟地址、通过页表权限检查保护内存安全、以及确保进程间的独立性。这些机制共同构成了现代操作系统内存管理的基础框架,为每个进程提供了独立且安全的内存访问环境。

2026-03-03 15:15:07 588

原创 【Linux学习笔记】Linux 冯诺依曼体系结构 & 操作系统核心

本文介绍了冯诺依曼体系结构和操作系统的基本概念。冯诺依曼体系结构定义了计算机由运算器、控制器、存储器、输入输出设备五部分组成,CPU只能直接访问内存,程序必须加载到内存才能运行。内存作为CPU和I/O设备间的缓冲层,平衡速度差异。操作系统是管理软硬件资源的软件,采用"先描述后组织"的方式管理资源,通过系统调用为用户程序提供服务。系统调用是访问操作系统的唯一合法途径,但通常被库函数、Shell等封装,用户无需直接使用。文章通过微信聊天等实例生动解释了数据流动过程,类比大学管理等日常实例帮助

2026-02-27 14:08:25 636 4

原创 【Linux学习笔记】如何使用gdb/cgdb调试程序

本文介绍了Linux下使用GDB/CGDB调试程序的核心方法。主要内容包括:1)Debug与Release模式的区别,使用gcc -g选项生成可调试版本;2)GDB/CGDB的基本使用,包括进入/退出调试、查看代码、运行程序等;3)关键调试技巧:断点管理(添加/删除/条件断点)、变量监视(p/display/watch)、函数栈帧查看(bt)等;4)CGDB的增强功能,如可视化界面和setvar修改变量值。文章还提供了调试命令速查表,帮助开发者快速掌握Linux环境下的程序调试技能。

2026-02-26 23:23:28 619 2

原创 【Linux学习笔记】git三板斧

本文介绍了Git版本控制工具的基本使用方法。主要内容包括:Git的起源与发展、安装方法(yum install git)、Gitee仓库创建与克隆(git clone)、Git核心操作三板斧(git add、git commit、git push)的具体使用步骤,以及首次使用Git时的必要配置(git config)。文章还讲解了git status查看状态、git log查看提交记录、git pull同步远端更新等辅助操作,并介绍了.gitignore文件的作用。通过本文可以快速掌握Git的基础使用方法,

2026-02-22 23:51:24 788 5

原创 【Linux学习笔记】初识Linux —— make和makefile自动化构建工具

本文系统介绍了make/makefile自动化构建工具的核心使用方法。首先阐述了make/makefile的基本概念和作用,重点讲解了依赖关系与依赖方法、伪目标(.PHONY)以及ACM时间判断机制等核心原理。随后详细展示了如何编写支持多文件编译的通用makefile,包括变量定义、自动变量($@/$^/$<)、通配符(%)和文件批量处理等高级语法。文章通过具体示例演示了从单文件到多文件的编译过程,并提供了优化后的通用makefile模板,帮助开发者掌握大型项目的自动化构建能力。

2026-02-09 08:00:00 669 10

原创 【Linux学习笔记】初识Linux —— 理解gcc编译器

本文介绍了Linux环境下使用gcc/g++编译器进行C/C++程序编译的完整过程。主要内容包括:1)编译链接的四个阶段(预处理、编译、汇编、链接);2)动静态库的区别与使用(.a静态库和.so动态库);3)常用gcc选项详解(-E、-S、-c、-o等)。文章通过示例演示了从源代码到可执行文件的完整编译流程,并对比了动态链接(默认)和静态链接(-static)的特点。最后总结了gcc各阶段的核心操作指令及常见应用场景,为Linux环境下C/C++程序开发提供了实用指南。

2026-02-08 10:40:31 1240 18

原创 【Linux学习笔记】初识Linux —— 学会使用vim编辑器

本文介绍了Linux中的软件包管理器和Vim编辑器的使用。主要内容包括:1)通过yum/apt等包管理器便捷安装软件;2)Vim的三种核心工作模式(命令、插入、底行模式)及其常用指令;3)实用技巧如多文件编辑、批量注释/去注释;4)个性化配置建议。文章提供了完整的Vim操作指南,涵盖光标移动、文本编辑、查找替换等核心功能,并强调了命令模式的基础地位。适合Linux初学者快速掌握Vim编辑器的基本使用,提升代码编辑效率。

2026-02-08 09:00:00 1286 8

原创 【Linux学习笔记】初识Linux —— 理解其中的权限

Linux权限管理摘要 本文介绍了Linux系统中的权限管理机制。主要内容包括: Shell作用:作为用户与内核的中间件,负责命令翻译和结果反馈 用户分类:超级用户(root)和普通用户,及其管理命令(useradd/passwd/userdel/su) 文件访问者:分为拥有者(u)、所属组(g)和其他用户(o) 权限类型:读(r)、写(w)、执行(x)权限及其符号和八进制表示法 权限修改:使用chmod(符号/八进制法)、chown(修改所有者)、chgrp(修改所属组) umask:控制新建文件/目录的

2026-02-07 18:46:02 861 16

原创 【Linux学习笔记】初识Linux—— 基本指令(下)

本文介绍了Linux常用指令的进阶用法,包括:1)查看文件内容的cat/more/less/head/tail指令及管道操作;2)时间相关的date/cal指令;3)文件查找的find/which指令;4)文本搜索的grep指令;5)打包压缩的zip/unzip/tar指令及文件传输方法;6)计算器bc指令;7)系统信息uname指令;8)关机指令。文章通过具体示例详细说明了各指令的常用选项和实际应用场景,帮助读者掌握Linux系统的基础操作技巧。适合Linux初学者作为指令参考手册使用。

2026-02-07 12:37:55 670 21

原创 【Linux学习笔记】初识Linux—— 基本指令(上)

🌟 Linux入门指南:系统简介与基础指令 本文介绍了Linux操作系统的基本概念和常用指令。Linux作为开源、自由的类UNIX系统,具有多用户、多任务、高稳定性等特点。文章详细讲解了Xshell远程连接服务器的操作步骤,并列举了ls、pwd、cd、touch、mkdir、rm、cp、mv、echo、cat等基础指令的用法及常用选项。同时介绍了Linux文件系统的树形结构、隐藏文件概念以及路径表示方法。适合Linux初学者快速掌握系统基础操作,为后续学习打下坚实基础。

2026-02-03 12:27:44 632 49

原创 【C + +】从 C 到 C++:类型转换避坑指南 + 特殊类设计技巧,代码更规范

本文探讨了C++中特殊类设计与类型转换的关键技术。在特殊类设计方面,介绍了禁止拷贝、限定堆/栈创建、不可继承及控制对象数量等模式的实现方法,对比了C++98与C++11的差异。在类型转换部分,系统分析了C风格的隐式/显式转换与C++的四种具名转换(static_cast、reinterpret_cast、const_cast、dynamic_cast),强调其安全优势。同时讲解了RTTI机制(typeid、dynamic_cast、decltype)在运行时类型识别中的应用。文章通过对比表格总结了各类技术的

2025-11-08 16:50:30 1385 18

原创 【C + + 】一文吃透 C++ 智能指针:RAII 思想 + 三大指针 + 实战避坑

本文系统介绍了C++智能指针的核心概念与应用场景。首先剖析了传统指针在异常处理时可能导致的内存泄漏问题,引出RAII资源管理思想。重点讲解了标准库中的四种智能指针:auto_ptr(已废弃)、unique_ptr(独占所有权)、shared_ptr(共享引用计数)和weak_ptr(解决循环引用)。详细分析了shared_ptr的线程安全问题和实现原理,包括引用计数机制和自定义删除器支持。最后提供了内存泄漏的检测工具与防范建议,以及智能指针的适用场景对比表和使用避坑指南。通过智能指针的合理使用,可以有效解决

2025-11-08 16:03:08 1443 5

原创 【C + +】C++11 (下) | 类新功能 + STL 变化 + 包装器全解析

主要是负责“转移”资源,而不是释放资源,编译器假设转移资源并不改变析构时的行为,所以它会继续生成默认析构函数,认为默认的资源释放机制(如自动销毁对象的成员)依然有效。特殊函数之间可能存在依赖或互斥的关系,编译器不会随意地插入可能与用户意图不符的代码,也就导致了当强制生成移动语句,编译器不会默认生成析构函数等与之依赖性强的函数,当你显式定义了析构函数时,编译器会尊重你的选择,不再生成默认的移动构造函数,需要你根据具体的类设计和资源管理策略,决定是否需要自定义移动构造函数。是一个类模板,也是一个包装器。

2025-11-03 21:02:38 1070 3

原创 【C + +】C + + 11(中)——Lambda 表达式 + 可变参数模板

C++11特性详解:Lambda表达式与可变参数模板 本文深入探讨了C++11中的两个核心特性:Lambda表达式和可变参数模板。 Lambda表达式部分详细解析了其语法结构(捕获列表mutable->返回类型{函数体}),六种捕获方式(值/引用/隐式/混合捕获)、mutable关键字的作用(解除值捕获的const限制),以及其在STL算法中的实际应用场景。通过底层原理分析,揭示Lambda本质是编译器生成的匿名仿函数类。 可变参数模板章节介绍了模板参数包(class...Args)和函数参数包(Ar

2025-11-01 11:32:20 1289 9

原创 【C + +】 C++11(上)--列表初始化+右值引用和移动语义详解

本文系统介绍了C++11的核心特性及其发展历程。重点讲解了列表初始化(统一{}初始化方式)、右值引用(区分左值/右值、移动语义)和完美转发三大特性。其中: 列表初始化通过std::initializer_list实现了容器多值初始化; 右值引用配合移动构造/赋值解决了传值返回的深拷贝问题,通过掠夺临时对象资源提升效率; 完美转发使用std::forward保持参数原始值属性。 文章还探讨了类型分类(纯右值/将亡值)、引用折叠规则等进阶概念,并指出C++11虽然新增约140个特性。

2025-10-28 23:06:37 997 117

原创 【C + + 】从源码到实现:哈希表封装 unordered_set 和 unordered_map 全解析

本文介绍了如何基于自定义哈希表实现C++11标准库中的unordered_set和unordered_map容器。主要内容包括:1. 分析SGL-STL30源码中的hash_set/hash_map实现框架;2. 通过模板参数KeyOfT解决哈希表处理不同类型数据的问题;3. 实现哈希表迭代器,支持单向前移操作;4. 复用哈希表完成unordered_set和unordered_map的基本功能,包括insert、find、迭代器等;5. 为unordered_map实现operator[]操作符。

2025-10-25 21:24:43 1465 72

原创 【C + + 】负载因子、哈希函数、冲突解决:C++ 哈希表实现的核心密码

本文深入探讨了哈希表的实现原理及其核心组件。首先介绍了哈希表的基本概念和高效特性(O(1)时间复杂度),对比了其与红黑树结构的性能差异。重点解析了哈希函数设计方法(直接定址法、除留余数法等)和冲突解决策略(开放定址法、链地址法),详细说明了负载因子的计算及其对性能的影响。文章还提供了两种实现方案:开放定址法(含线性探测、二次探测)和链地址法(哈希桶),给出完整代码实现并分析关键操作(插入、查找、删除)的处理逻辑。最后强调了自定义类型转整型的处理方式。

2025-10-25 21:00:42 1226 109

原创 【C + +】unordered_set 和 unordered_map 的用法、区别、性能全解析

本文介绍了C++标准库中的无序关联容器unordered_set和unordered_map。它们与有序容器set/map的主要区别在于使用哈希表作为底层结构,元素无序存储,查找效率平均为O(1)。文章详细讲解了二者的基本操作:插入、查找、删除等,并比较了它们与有序容器的区别,包括底层实现、键值要求、迭代器类型和性能差异。此外,还简要提及了支持键冗余的unordered_multiset/multimap。最后指出哈希冲突可能导致最坏情况下效率退化为O(n),并介绍了负载因子机制。

2025-10-24 19:29:09 2234 110

原创 【C + + 】基于红黑树封装的Map与Set实现过程详解

本文介绍了基于红黑树封装Map和Set的实现方法,重点分析了模板参数的设计原理。主要内容包括: 设计思路:通过红黑树的模板参数区分Map和Set,Map存储键值对(pair<K,V>),Set直接存储键(K)。使用KeyOfT仿函数统一键比较逻辑。 关键改造: 红黑树节点存储泛型T 迭代器支持++/--操作 Insert返回pair<iterator,bool>供Map的operator[]使用 实现Set时T设为const K防止键修改 核心优势: 复用同一棵红黑树实现两种容器 通

2025-10-22 21:14:36 1230 11

原创 【C + +】红黑树:全面剖析与深度学习

本文详细介绍了红黑树的实现原理与操作。红黑树是一种自平衡二叉搜索树,通过节点着色(红/黑)和旋转操作保持平衡。文章阐述了红黑树的五大性质、节点结构定义,重点讲解了插入操作的三种处理情况(变色、单旋+变色、双旋+变色)。通过代码示例展示了红黑树的实现,包括旋转、插入、遍历和平衡检查等功能。最后比较了红黑树与AVL树的性能差异,指出红黑树在频繁插入删除场景下的优势。文章提供了完整的RBTree.h和AVLTree.h实现代码,以及测试用例验证两种树的性能表现。

2025-10-20 18:37:50 2047 7

原创 【C + +】异常处理:深度解析与实战

本文系统介绍了C++异常处理机制,主要内容包括:1. 与传统错误处理方式的对比分析,指出异常机制的优势在于错误信息表达清晰、避免层层传递错误码;2. 通过"外卖点餐"场景类比,说明程序中不同错误类型的处理策略;3. 详细讲解C++异常处理的三个核心关键字(try/catch/throw)及其匹配规则、栈展开机制和重新抛出语法;4. 重点分析异常安全问题,提出RAII资源管理方案;5. 介绍自定义异常体系的实现方法,建议通过继承统一基类来构建层次化的异常类;6. 总结C++标准库异常体系的

2025-10-18 15:56:17 2041 28

原创 【C++】AVL树的平衡机制与实现详解(附思维导图)

本文介绍了AVL树的基本概念、实现原理及操作。AVL树是一种自平衡二叉搜索树,通过平衡因子(左右子树高度差不超过1)确保查找效率(O(logn))。文章详细讲解了AVL树的节点结构、插入操作(涉及单旋和双旋调整)、查找方法、验证逻辑(中序遍历和平衡检查)以及性能分析。针对插入导致的失衡问题,重点分析了四种旋转场景(左单旋、右单旋、左右双旋、右左双旋)的实现细节,并提供了完整代码示例。最后指出AVL树严格平衡的特性使其适合查找密集型场景,但频繁插入删除时维护成本较高。

2025-10-15 04:00:00 1907 16

原创 【C++STL】map与set(举例+详解,一文说懂)!

本文介绍了C++中set和map两种关联式容器的使用。set是key模型容器,用于去重和排序,元素不可修改;map是key-value模型容器,支持通过key快速查找value。重点讲解了容器的构造、插入、删除、查找等操作,以及multiset/multimap允许重复元素的特性。特别分析了map的operator[]实现原理,它巧妙结合了插入和修改功能,可高效实现统计计数等功能。文章通过统计水果出现次数的示例,对比了find和operator[]的不同实现方式,展示了关联式容器在实际问题中的应用价值。

2025-09-29 17:30:00 2455 49

原创 【C++】数据结构——二叉搜索树(详细图解,详细代码实现)

本文介绍了C++中的二叉搜索树(BST)数据结构。首先讲解了二叉搜索树的基本概念和特性:左子树值小于根节点,右子树值大于根节点。随后详细分析了二叉搜索树的实现方式,包括节点类设计、构造函数、拷贝构造函数和析构函数等核心组件。文章还重点讲解了BST的关键操作:插入、查找和删除的算法实现,并区分了key-only和key/value两种使用场景。最后提供了完整的key/value二叉搜索树实现代码,展示了如何应用于实际场景如字典查询和单词统计。文章内容全面,从理论到实践系统地介绍了二叉搜索树的实现与应用。

2025-09-26 08:00:00 2327 34

原创 【C++】深入浅出之多态(举例+详解,一文说懂)!

本文深入探讨了C++面向对象编程中的多态特性。首先介绍了多态的基本概念,即同一方法在不同对象上产生不同行为。文章详细解析了多态的实现条件:必须通过基类指针或引用调用虚函数,且派生类必须重写基类虚函数。重点讲解了虚函数的重写规则、虚函数表机制以及动态绑定的实现原理,并通过多个代码示例展示了多态的实际应用场景。文章还对比了重载、覆盖和隐藏的区别,讨论了抽象类和接口继承的概念,最后通过面试题加深对多态底层机制的理解。全文系统性地阐述了多态从语法到实现的全貌,为C++开发者提供了深入理解多态特性的重要参考。

2025-09-22 08:00:00 3346 84

原创 【C++】深入浅出之继承(一文说懂)

本文系统介绍了C++继承机制的核心概念和应用场景。主要内容包括:1. 继承的基本概念与定义方式,重点讲解了三种访问权限在继承中的变化规则;2. 派生类与基类对象的赋值转换(切片机制);3. 继承中的名称隐藏规则及其解决方法;4. 派生类默认成员函数的实现要点,包括构造、拷贝构造、赋值重载和析构函数的调用顺序;5. 多继承和菱形继承问题,分析了数据冗余和二义性问题及其解决方案(虚继承);6. 对比了继承与组合的优缺点,建议优先使用组合以降低耦合度。

2025-09-21 07:30:00 2172 30

原创 【C++】模版的特化讲解(函数模版和类模版的特化)

C++模板进阶指南:非类型参数、特化与分离编译 本文深入探讨了C++模板编程的三个关键知识点: 非类型模板参数:允许使用常量作为模板参数,常用于静态数组大小指定,仅支持整型和浮点型(C++20)。 模板特化:包括函数模板特化(需先有基础模板)和类模板特化(全特化/偏特化),用于处理特殊类型的特殊情况。 分离编译问题:模板声明与定义分离会导致链接错误,解决方法是将二者统一放在.hpp文件中。 模板虽能提高代码复用性,但可能导致代码膨胀和编译错误信息混乱等问题。掌握这些进阶技巧能显著提升模板使用效率。

2025-09-19 08:00:00 1980 19

原创 【C++】Stack和Queue的底层封装和实现

本文介绍了C++ STL中stack、queue和priority_queue的底层实现与使用方式。通过分析容器适配器设计模式,讲解了三种数据结构分别基于vector、list和deque的模拟实现方法。其中,stack通过vector实现后进先出操作,queue使用list支持先进先出,priority_queue则利用堆算法构建优先队列。重点说明了deque作为默认底层容器的优势,以及自定义类型在priority_queue中需要重载比较运算符的注意事项。文章还对比了不同容器在特定场景下的性能差异。

2025-09-17 08:00:00 2284 25

原创 【C++STL】list的详细用法和底层实现

本文详细讲解了C++ STL库中list容器的实现原理和使用方法。list是一个带头双向循环链表,支持高效的元素插入和删除操作。文章首先介绍了list节点的基本结构,包括数据成员和前驱后继指针的实现。随后重点讲解了list类的构造函数、拷贝构造、赋值重载、析构函数等核心成员函数的实现细节,并分析了迭代器的设计原理及运算符重载。此外,文章还比较了vector和list的排序效率差异,解释了list需要自定义sort函数的原因,并通过迭代器类阐述了封装的概念。最后,文章总结了list相对于vector在随机访问

2025-09-15 18:47:07 2250 8

原创 【C++STL】vector的详细用法和底层原理

本文详细介绍了C++ STL中vector容器的使用方法,包括创建方式、常用成员函数和算法操作。主要内容包括:1. vector的创建方式及初始化方法;2. 迭代器、容量管理、元素访问和修改器等常用函数;3. push_back、insert、erase等元素操作方法;4. sort、unique、reverse等算法操作;5. 查找最值的方法;6. vector扩容机制及优化建议。文章通过代码示例展示了vector的各种用法,并比较了不同操作之间的区别,如push_back与emplace_back的效率

2025-09-14 19:58:14 1538 8

原创 【C++STL】一文总结String类的常用函数用法总结

📝【C++ STL string类使用指南】 本文系统介绍了C++ STL中string类的核心操作: 1️⃣ 初始化:6种构造方式(空串/拷贝/子串/字符填充等) 2️⃣ 访问方式:下标[]、迭代器(正向/反向)、范围for循环 3️⃣ 容量管理:size()/length()、capacity()、reserve()/resize()区别 4️⃣ 常用操作:插入(push_back/insert)、拼接(append/+)、删除(erase/clear)、替换(replace) 。

2025-09-11 19:06:22 1191 10

原创 【C++】模版初阶---函数模版、类模版

本文介绍了C++中的函数模板和类模板,重点讲解了泛型编程的概念与实现方式。函数模板部分包括模板格式、编译原理、实例化方式(隐式/显式)及匹配规则(优先非模板函数);类模板部分涵盖定义格式、实例化特点(必须显式)及与函数模板的区别。文章还解答了三个关键问题:1)两种实例化的区别与应用场景;2)类模板与函数模板的核心差异;3)同名模板与非模板函数的调用优先级。最后强调模板声明与定义必须放在同一文件中,避免链接错误。适合C++开发者理解模板编程基础。

2025-09-10 16:36:36 1351 2

原创 【C++】C/C++内存管理

C++内存管理详解:从基础到高级应用 本文系统介绍了C/C++的内存管理机制,涵盖以下核心内容: 内存分布详解:解析栈、堆、静态区等不同内存区域的特点和使用场景 动态内存管理对比:对比C语言的malloc/free与C++的new/delete机制 高级特性:深入讲解operator new/delete函数、定位new表达式等底层原理 关键区别:总结malloc/free与new/delete在初始化、异常处理等方面的差异 使用规范:强调匹配使用new/delete和new[]/delete[]的重要性

2025-09-09 18:16:04 1278 2

原创 【C++】类和对象(结尾)

本文总结了C++类和对象的核心知识点,主要包括:1)初始化列表的使用规则和注意事项;2)隐式类型转换与explicit关键字的作用;3)静态成员的声明、定义和使用方法;4)友元类和友元函数的特性;5)内部类的定义和访问权限;6)匿名对象的创建和使用场景。文章通过代码示例详细说明了各类特性的使用方法和注意事项,对于理解C++面向对象编程中的关键概念具有重要参考价值。

2025-09-07 22:11:13 1249 2

原创 【C++】六个默认成员函数(下)

本文介绍了C++运算符重载的核心概念。运算符重载通过定义特殊函数(如operator+)为类类型对象赋予运算能力,需遵循特定规则:函数名以operator开头、必须包含类类型参数、不能改变内置运算符含义。重点讲解了流插入/提取运算符(<<、>>)的全局重载方法,需配合友元函数访问私有成员;详细分析了赋值运算符重载的参数传递、返回值优化和自赋值检查;区分了拷贝构造与赋值重载的使用场景;还介绍了const成员函数对this指针的修饰作用,以及取地址运算符重载的注意事项。编译器会为未显式定

2025-09-07 18:41:56 1754 3

空空如也

空空如也

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

TA关注的人

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