自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【C++】多态

【摘要】本文深入探讨了C++中的多态机制。多态分为静态多态(函数重载)和动态多态(虚函数重写+父类指针调用)。构成多态需要满足两个条件:通过基类指针/引用调用虚函数,且派生类必须重写基类虚函数。文章详细分析了虚函数表原理,指出虚函数表存储虚函数指针,同类对象共享同一虚表。通过单继承和多继承案例,演示了虚函数表的构成方式,并介绍了override和final关键字的使用。最后讨论了菱形虚拟继承下的多态处理及二义性解决方案。多态机制实现了运行时的动态绑定,使不同对象对同一行为表现出不同形态。

2025-08-02 14:06:24 428

原创 【C++】继承

本文系统介绍了C++继承机制的核心概念与应用。重点阐述了继承的定义方式、访问权限控制、对象赋值转换规则、作用域处理、派生类默认成员函数实现等关键技术要点。深入分析了菱形继承问题及其虚拟继承解决方案的原理,通过虚基表指针和偏移量实现数据共享。对比了继承(is-a)与组合(has-a)的差异,指出组合在耦合度和封装性方面的优势。最后反思了C++多继承带来的复杂性,建议谨慎使用以避免菱形继承问题。文章通过大量代码示例展示了继承机制的实际应用,为面向对象程序设计中的代码复用提供了系统指导。

2025-07-27 11:26:37 715

原创 【C++】list

本文主要介绍了C++中list容器的使用和实现原理。文章首先讲解了list的构造函数、迭代器和常用操作,包括正向/反向迭代器、splice函数和remove函数的使用方法。重点分析了list迭代器失效问题,指出删除操作会导致指向被删除节点的迭代器失效,并给出了正确使用迭代器的示例代码。文章还通过对比vector容器,详细展示了list的模拟实现过程,包括节点类、迭代器类和list类的定义,涵盖了构造、析构、插入、删除等核心功能的实现细节。通过这段代码可以清晰地理解list作为双向循环链表的数据结构特点及其操

2025-07-21 18:02:13 338

原创 【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 1070

原创 【C++】string

本文详细介绍了C++中string类的使用方法和实现原理,提供了完整的string类模拟实现代码

2025-07-16 14:46:41 872

原创 【C++】迭代器

介绍迭代器的类型、兼容性

2025-07-16 14:41:42 196

原创 【Linux】环境基础和开发工具

如何使用 yum ,如何用 vim 编辑文本,gcc/g++ 编译器的使用,make 和 makefile ,gdb调试器,git

2025-07-03 17:01:33 909

原创 【Linux】权限

权限管理是Linux系统安全的重要机制,合理设置权限可以有效保护系统资源。

2025-06-26 20:23:35 708

原创 【Linux】 基本指令

ls、pwd、cd等基本指令,以及一些简单说明,适合 Linux 初学者学习

2025-06-26 10:17:29 633

原创 【C++】模板

本文系统介绍了C++模板编程的核心内容,主要包括:1. 函数模板:基本语法、实例化方式(隐式/显式)、参数匹配原则及注意事项;2. 类模板:定义格式、实例化特点、成员函数定义规范;3. 非类型模板参数的使用限制;4. 模板特化机制:函数模板特化步骤、类模板全特化与偏特化;5. 模板分离编译问题及其解决方案。文章通过具体代码示例,详细解析了模板编程中的常见问题与最佳实践,如类型推断规则、显式实例化场景、特化应用等核心概念,为掌握C++泛型编程提供了全面指导。

2025-05-31 11:57:38 948

原创 【C++】内存管理

本文介绍了C++内存管理的核心概念,主要包括: 内存区域划分:栈(局部变量)、堆(动态分配)、数据段(全局/静态变量)和代码段(常量) C++内存管理方式:new/delete操作符的使用及与malloc/free的区别 内存泄漏的危害:长期运行程序的内存泄漏会导致性能下降甚至系统崩溃 new/delete相比malloc/free的优势在于自动调用构造/析构函数、类型安全、异常处理等特性。文章通过具体示例详细说明了各内存区域的特征、new/delete的实现原理以及不同内存分配方式的适用场景。

2025-05-18 18:49:00 794

原创 【C++】类和对象

本文系统介绍了C++中类与对象的核心概念,涵盖类的定义、访问限定符、实例化、存储方式等基础内容。重点讲解了this指针原理、六大默认成员函数(构造/析构/拷贝构造等)的实现细节,以及运算符重载、const成员函数等进阶特性。文章对比了struct与class的区别,深入探讨了初始化列表、静态成员、友元等关键概念,并通过栈类等实例说明封装思想。最后介绍了内部类和匿名类的特殊用法,帮助读者全面掌握面向对象编程中的类设计技巧。

2025-05-16 20:07:18 978

原创 【C++】入门预备知识

域、命名空间、输入输出、缺省参数、函数重载、引用、auto、内联函数

2025-04-20 00:26:04 902

原创 【数据结构】排序

快速排序、希尔排序、堆排序、归并排序、插入排序、冒泡排序、选择排序

2025-04-11 20:00:34 1119

原创 【数据结构】完全二叉树叶子结点数量的计算

5. 第10层的490个节点是由第9层的 \( \lceil 490 / 2 \rceil = 245 \) 个节点生成的。2. **层数的计算错误**:在计算树的层数时,可能会混淆 \( 2^h \) 和 \( 2^h - 1 \)。4. **度为1的节点数的假设**:在验证时,可能会忽略完全二叉树中度为1的节点数最多为1的情况。3. **对于任何二叉树,度为0的节点(叶子节点)数 = 度为2的节点数 + 1**。2. **高度为h的二叉树最多有2^h - 1个节点**(即满二叉树的情况)。

2025-03-31 10:56:33 492

原创 【数据结构】二叉树

二叉树的概念、性质以及堆和堆排序、二叉树的遍历和一些简单操作

2025-03-22 10:22:37 1127

原创 【数据结构】栈和队列

栈和队列的基本概念和实现

2025-03-08 10:45:47 376

原创 【数据结构】链表与顺序表的比较

链表与顺序表各有千秋,链表不能完全替代顺序表。

2025-03-01 09:47:34 354

原创 【数据结构】链表的带环问题

如果起始点到入口点的距离是 L,环的周长是 C,入口点到相遇点的距离是 X ( 0 <= X < C,因为 fast 的速度是 slow 的两倍 ), 那么 slow 走的路程是 L + X,fast 走的路程是 L + n*C + X,其中 n 是正整数,n >= 1,代表 slow 进圈前 fast 转的圈数。2)如果 c - 1 是奇数,n 最后会从 3 减到 -1,即 fast 会错过 slow,跑到 slow 的前一个位置。

2025-02-27 12:23:00 1188

原创 【数据结构】链表

链表的概念、分类和实现

2025-02-25 11:56:24 1164

原创 【数据结构】链表练习

可以使用快慢指针:fast 一次走两步,slow 一次走一步。当 fast == NULL(偶数个结点)或者 fast->next == NULL(奇数个结点)就停止,返回 slow。给你单链表的头结点 head ,请你找出并返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。1、一次性定义多个指针时,第二个及以后的指针名前面都要加 *。2、while( )括号内是循环继续的条件。要求:只遍历一遍链表。

2025-02-23 12:50:42 315

原创 【数据结构】复杂度

时间复杂度和空间复杂度

2025-02-15 20:12:14 1462

原创 消失的数字

按位异或的性质

2025-02-15 14:30:25 234

原创 【C语言】指针的练习题

一些有关指针的练习题

2025-02-13 17:15:37 599

原创 【C语言】程序环境与预处理

Ctrl + F5 后,源代码发生了什么?

2025-02-13 14:00:52 1406

原创 【C语言】通讯录

运用了动态内存管理、文件操作,实现通讯录的容量灵活改变,通讯录永久保存

2025-02-11 12:09:58 122

原创 【C语言】有关位段的题目

需要注意的是位段成员的存储空间是从右到左的(VS 环境下),用 %02x (十六进制)打印 puc 数组元素,puc 认为它指向的是一个类型为 unsigned char 的数组,所以 puc[0] 就是 00000010,puc[1] 就是 00101001,所以最终打印的结果就是 02 29 00 00。但 puc 认为它指向的是一个数组,pstPimData 认为它指向的是一个结构体。puc 和 pstPimData 指向同一个地址,题目是:打印的结果是什么?

2025-02-11 11:43:40 142

原创 【C语言】文件操作

将数据永久的保存

2025-02-10 14:48:20 1201

原创 【C语言】动态内存管理

有时候我们需要的空间大小在程序运行的时候才能知道,这时候就只能试试动态内存开辟了。

2025-02-08 14:34:32 1312

原创 【C语言】自定义类型

结构体、枚举、共用体

2025-01-26 16:30:22 1058

原创 【C语言】字符串与内存函数

有关字符串、字符、内存函数的使用、模拟实现、易错点。

2025-01-21 13:33:41 1079

原创 数据的存储(万字总结,建议收藏)

本文系统介绍了计算机中数据的存储与表示机制,主要内容包括: 数值编码方式:详细解释了原码、反码和补码三种二进制表示方法,重点阐述了计算机采用补码存储的原因(统一符号处理、简化加减运算)。 存储模式:分析了大端存储和小端存储的区别及其产生原因,并提供了检测当前机器存储模式的函数实现。 数据类型转换: 截断现象(大类型转小类型的数据丢失) 溢出问题(超出数据类型范围的处理方式) 隐式类型转换(整型提升规则及其CPU实现原理) 数据输出机制: 整数输出的补码转换过程 浮点数的IEEE 754标准存储格式(S符号位

2025-01-08 18:08:52 1419

原创 vs调试技巧(非常重要)

每一次调试都是尝试破案的过程

2025-01-06 13:14:48 1260

原创 【C语言】指针

不会指针等于不会 C 语言

2025-01-01 17:23:29 1088

原创 【C语言】函数(递归、函数栈帧)

总结函数递归,用汇编语言讲解函数栈帧,学习完后,将更加深刻地领悟 c 语言

2024-12-29 20:49:03 1179

原创 【C语言】操作符

各种操作符的讲解和易错点,以及数据存储相关知识

2024-12-26 21:36:26 1041

原创 【c语言】逃离停车场

返回离开停车场的字符串。L、R、D分别表示向左、向右、向下移动,L、R、D后的数字表示移动的距离。除了一楼,每一层只有一个楼梯,一楼没有任何楼梯。请你设计并返回一个最快离开停车场的字符串。你被困在一个多层停车场。您的任务是仅使用楼梯离开停车场。出口总是在一楼的右下角。2 表示您的起始位置,可以在停车场的任何一层。表示向右走三下,向下走两下,再向右走一下。您必须使用楼梯 1 才能下一层。接下来的 N 行表示停车场。第一行 N 表示有几层楼。出口总是在一楼的右下角。0 表示免费停车位。

2024-12-19 23:01:28 312

原创 【c语言】分支循环总结

分支结构和循环结构是编程中非常重要的控制结构,它们能够让程序根据不同的情况做出灵活的响应,并且高效地处理重复性的任务。

2024-12-17 22:25:44 1379

原创 【c语言】函数 + 数组 = 扫雷游戏

待改进的地方:1、用函数递归实现连片排查。2、难度选择。 3、地雷标记 。 4、胜利条件。

2024-12-12 17:34:59 135

原创 【c语言初学者】用c语言打印杨辉三角

用两个 for 循环,外循环控制 m 的值,使 m 每次加一,直到输出到想要输出的行数( m 的值加一就是行数)。每次退出内循环后,控制换行。再算出 m、(m-n)、n 的阶乘,分别赋给 s1、s2、s3,就可以表示这个组合数了,组合数的“上标”和“下标”恰好和二维数组元素的下标对应,每次算出一个组合数,就可以存储到一个二维数组的一个元素去。例如在杨辉三角中,第3行的三个数恰好对应着两数和的平方的展开式的每一项的系数,第4行的四个数恰好依次对应两数和的立方的展开式的每一项的系数,依次类推。

2024-12-08 21:05:16 357

空空如也

空空如也

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

TA关注的人

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