- 博客(33)
- 收藏
- 关注
原创 C++ 继承详解:从概念到菱形继承
继承(inheritance)机制是面向对象程序设计使代码可以复用最重要的手段,它允许我们在保持原有类特性的基础上进行扩展,增加方法(成员函数)和属性(成员变量),这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的是函数层次的复用,继承是类设计层次的复用。
2026-10-18 20:44:33
120
原创 C++ 模板进阶(七):特化、分离编译与模板总结
一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。【优点】模板复用了代码,节省资源,更快的迭代开发,C++ 的标准模板库(STL)因此而产生。增强了代码的灵活性。【缺陷】模板会导致代码膨胀问题,也会导致编译时间变长。出现模板编译错误时,错误信息非常凌乱,不易定位错误。
2026-10-09 20:39:16
143
原创 C++学习之路第七期:list 容器详解与模拟实现
本文系统讲解C++ STL中list容器的特性与实现。list基于带头结点的双向循环链表,支持高效插入删除(O(1)),但不支持随机访问。文章涵盖list的构造、迭代器使用、增删改查接口及迭代器失效规则,并通过模拟实现展示其底层结构。最后与vector对比,从底层结构、访问效率、空间利用率及迭代器失效等方面深入分析两者差异,帮助读者全面掌握list的应用场景与设计思想。
2026-09-27 22:05:25
527
原创 C++学习之路(六):vector 从入门到模拟实现
本文系统讲解C++ STL中vector容器的使用与原理,涵盖构造、迭代器、扩容机制、增删查改操作及关键的迭代器失效问题。通过对比VS(1.5倍扩容)与g++(2倍扩容)差异,强调reserve预分配空间的重要性,并深入剖析插入、删除等操作导致迭代器失效的原因与解决方案,结合OJ实战案例,帮助读者实现从“能用”到“明理”再到“能扩展”的进阶目标。
2026-09-27 21:40:21
180
原创 Linux 基础指令入门:常用命令、Shell 原理与权限管理
本文系统梳理了Linux命令行核心基础,涵盖路径操作(pwd、ls、cd)、文件管理(touch、mkdir、rm、cp、mv)、内容查看(cat、less、head、tail、grep)、打包压缩(tar、zip)、系统信息(uname、date、top)及权限管理(chmod、chown、umask)。强调在无图形界面的生产环境中掌握命令行是开发、运维必备技能。建议初学者按目录→文件→内容→权限顺序实操,并善用man手册查证,通过反复练习建立熟练度。
2026-09-12 20:54:54
233
原创 【C++学习之路05】搞懂C++内存管理:内存分区、new/delete与malloc/free的本质区别
本文系统梳理了C++/C语言的内存管理机制。首先介绍了内存分布的五个区域:栈(向下增长)、内存映射段(进程通信)、堆(向上增长)、数据段(全局/静态数据)和代码段(可执行代码)。随后对比了C语言的malloc/free与C++的new/delete操作符,重点说明new/delete对自定义类型会自动调用构造/析构函数。文章深入解析了operator new/delete的底层实现(基于malloc/free)及异常处理机制,并详细阐述了new/delete的实现原理(包括数组版本)。最后介绍了定位new表
2026-08-12 15:11:26
217
1
原创 【C++学习之路04】类进阶核心:初始化列表、友元、隐式转换与编译器优化全解
本文摘要: 构造函数初始化列表:介绍了C++中成员变量初始化的两种方式,强调初始化列表的语法规则、使用场景(如const/引用成员必须使用初始化列表)和注意事项(声明顺序影响初始化顺序)。 类型转换:探讨内置类型与类类型的隐式转换机制,说明explicit关键字可禁止隐式转换,并演示类类型对象间的转换实现方式。 static成员:静态成员变量需类外初始化,被所有对象共享;静态成员函数无this指针,仅能访问静态成员,可通过类名或对象调用。 友元机制:友元函数/类可突破封装访问私有成员,具有单向性和非传递性,
2026-08-07 18:26:56
207
1
原创 【C++学习之路03】深入类的核心:构造/析构函数与运算符重载详解(中)
本文摘要主要介绍了C++中类的默认成员函数,重点讲解了构造函数、析构函数、拷贝构造函数、赋值运算符重载和取地址运算符重载这五类默认成员函数的特点和使用方法。构造函数用于对象初始化,析构函数用于资源释放,拷贝构造函数处理对象拷贝行为,赋值运算符重载实现对象间的赋值操作,取地址运算符重载则用于获取对象地址。文章通过代码示例详细说明了这些成员函数的语法规则、默认行为和注意事项,帮助读者理解C++中类的基本特性及其背后的实现原理。
2026-08-06 23:05:34
216
1
原创 【C++学习之路02】|初识类:从定义到成员,C++类的基础语法梳理(上)
本文总结了C++类的基本概念和使用方法。主要内容包括:1)类的定义格式和成员组成;2)访问限定符(public/protected/private)的作用;3)类域的概念和作用域操作符的使用;4)类的实例化过程;5)类对象大小的计算规则(遵循内存对齐原则);6)this指针的原理和作用,编译器会自动在成员函数中添加this指针参数。文章通过代码示例详细说明了类的封装特性、成员访问控制以及对象内存布局等核心概念,为C++面向对象编程提供了基础指导。
2026-05-10 22:44:51
403
原创 【C++学习之路01】||零基础无痛入坑,C++前置知识保姆级数梳理
本文总结了C++基础语法要点,包括:1)第一个C++程序结构;2)命名空间(namespace)的定义与使用,解决命名冲突问题;3)C++输入输出流(cin/cout)的使用;4)缺省参数的全缺省和半缺省规则;5)函数重载的条件与注意事项;6)引用的概念、特性及使用场景;7)const引用的权限规则;8)指针与引用的区别;9)内联函数(inline)的特性;10)nullptr替代NULL的优势。文章通过代码示例详细说明了各语法点的使用方法和注意事项,为C++初学者提供了系统的语法学习指南。
2026-05-09 16:15:36
405
原创 数据结构之二叉树(2)(二叉树的遍历+相关节点的计算)
本文介绍了二叉树的基本操作算法实现,包括四种遍历方式和五种计算功能。遍历方式包含:1)前序遍历(根-左-右);2)中序遍历(左-根-右);3)后序遍历(左-右-根);4)层序遍历(使用队列实现)。计算功能包含:1)计算叶子节点个数;2)计算总节点数;3)计算第k层节点数;4)计算树的高度;5)查找指定值的节点。所有算法均采用递归实现,对空树情况做了特殊处理,并通过三目运算符等方式实现条件判断和结果返回。
2026-05-06 22:26:06
38
原创 数据结构之二叉树(1)(树的相关概念+堆的实现)
本文系统介绍了树和二叉树的数据结构概念与应用。主要内容包括:1. 树的基本概念:定义、节点关系(双亲/孩子/兄弟节点)、度、层次等术语,以及树的表示方法;2. 二叉树特性:包括满二叉树、完全二叉树,以及顺序/链式存储结构;3. 堆的实现:详细讲解了大/小堆的构建,重点分析了向上调整和向下调整两种算法的时间复杂度(O(n) vs O(nlogn));4. 堆的应用:包括堆排序算法和TOP-K问题的解决方案,通过建立K元素堆处理海量数据的高效查询。文章通过图示和代码示例(如节点结构定义、调整算法实现等)直观展示
2026-04-16 19:56:51
376
原创 栈和队列OJ题
摘要:本文针对当前AI替代程序员的焦虑问题,指出技术学习仍是核心。通过讲解三道OJ题目,深入解析栈和队列的应用:1)使用栈解决有效括号匹配问题,分析四种边界情况;2)用双队列实现栈结构,重点讲解数据转移和假设法的应用;3)用双栈模拟队列操作,详解数据逆置方法。文章强调数据结构基础的重要性,并预告后续二叉树内容,建议程序员应专注技术提升而非过度焦虑AI威胁。代码实现部分详细展示了C语言的手动实现过程。
2026-04-10 21:43:50
401
原创 数据结构之顺序表基础
本文介绍了顺序表的概念、分类及实现方法。顺序表是线性表的一种,在逻辑和物理结构上都是连续的。文章比较了顺序表与数组的区别,指出顺序表是对数组的封装。顺序表分为静态(使用定长数组)和动态(可扩容)两种类型,重点阐述了动态顺序表的实现方法,包括创建、初始化、增容、插入删除等操作。最后提醒注意相关头文件的包含及错误检查。动态顺序表通过按需扩容解决了静态顺序表空间分配不合理的问题。
2026-01-31 16:39:02
221
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅