自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【C++】18:多态

文章摘要:本文详细介绍了C++中的多态机制。首先解释了多态的概念,分为编译时多态(静态多态)和运行时多态(动态多态),重点阐述了运行时多态的实现条件:必须通过基类指针或引用调用虚函数,且派生类需完成虚函数重写。文章通过买票和动物叫声等实例演示多态效果,分析了虚函数表的结构和多态底层原理,指出多态调用是在运行时通过虚函数表动态绑定实现的。最后讨论了纯虚函数、抽象类以及重载/重写/隐藏的区别,并介绍了C++11的override和final关键字。

2025-12-03 09:40:38 527

原创 【C++】17:继承

本文系统介绍了C++继承机制的核心概念和应用。主要内容包括:1)继承的基本概念和定义方式,分析不同继承方式下成员访问权限的变化;2)父子类对象赋值转换规则及作用域隐藏问题;3)子类默认成员函数的实现要点,特别是构造、拷贝构造、赋值和析构函数的调用顺序;4)多继承和菱形继承问题,通过虚继承解决数据冗余和二义性;5)继承与组合的区别,强调优先使用组合降低耦合度。文章通过大量代码示例详细说明了继承体系中的关键特性,为面向对象程序设计提供了重要参考。

2025-11-26 20:27:04 897

原创 【C++】16:模板进阶

本文深入探讨了C++模板的高级应用,主要内容包括:1. 非类型模板参数的使用,通过常量参数实现模板的灵活定制;2. Array容器的实现原理及其与普通数组和vector的对比;3. 模板特化的两种形式:函数模板特化和类模板特化,其中类模板特化又分为全特化和偏特化;4. 模板分离编译问题及解决方案。文章通过具体代码示例,展示了如何利用模板特化处理特殊类型的情况,并分析了模板的优缺点。模板虽然会带来代码膨胀和编译时间增加的问题,但其代码复用性和灵活性使其成为C++泛型编程的重要基础。

2025-11-25 13:05:27 943

原创 【C++】15:priority_queue的理解,使用和模拟实现以及仿函数的介绍和使用

本文详细介绍了C++中的优先级队列(priority_queue)及其实现原理。主要内容包括:1. 优先级队列的基本概念和使用方法,包括构造函数、push/pop操作等;2. 优先级队列的底层实现机制,基于堆数据结构的向上/向下调整算法;3. 仿函数的概念及其在优先级队列中的应用,通过less/greater实现大堆/小堆的灵活切换;4. 特殊场景下的仿函数使用,包括处理自定义类型和指针类型的情况。文章通过大量代码示例演示了优先级队列的各种操作和实现细节,为理解和使用这一重要容器提供了全面指导。

2025-11-16 22:30:03 983

原创 【C++】4:引用的基础知识和使用

本文介绍了C++中引用的概念与应用。引用是变量的别名,不占用额外内存空间,需在定义时初始化且不可更改指向对象。文章阐述了引用的特性(必须初始化、可多个引用同一对象、不可更改实体)和使用场景(传参和返回值优化)。特别分析了const引用的权限控制问题,指出临时对象必须使用常引用。最后对比了引用与指针的区别:引用更安全但功能受限,指针更灵活但有风险。两者在C++中相辅相成,各有不可替代的作用。

2025-11-15 19:24:01 543 1

原创 【C++】3:函数重载、内联函数和nullptr

本文介绍了C++中的三个重要特性:1. 函数重载:允许在同一作用域定义同名函数,通过参数类型、个数或顺序区分,提高了代码复用性,但需要注意避免与默认参数冲突。2. 内联函数:用inline修饰的短小函数,编译时可能在调用处展开以提高效率,但不适合复杂函数,且声明和定义应放在一起避免链接错误。3. nullptr:C++11引入的空指针常量,解决了NULL可能导致的类型歧义问题,可以隐式转换为任意指针类型但不会转为整型,更安全明确。

2025-11-15 19:21:34 745

原创 【C++】2:cin和cout的介绍和使用,函数的缺省参数

本文介绍了C++中两个重要特性:输入输出流和缺省参数。第一部分讲解<iostream>库中cin/cout的使用方法,相比C语言的printf/scanf,C++的流操作能自动识别变量类型,支持自定义类型对象的输入输出。第二部分详细说明函数缺省参数的两种形式:全缺省和半缺省参数,强调半缺省参数必须从右向左连续设置,调用时实参必须从左向右依次传递。通过代码示例展示了不同调用方式下参数取值的变化规则,指出在函数声明和定义分离时,缺省参数只能在声明中指定。

2025-11-15 19:18:44 823

原创 【C++】14:stack和queue的理解和使用,deque的介绍,stack和queue的模拟实现(超详细)

本文详细介绍了C++中的stack和queue数据结构及其实现。主要内容包括:1. 栈和队列的基本概念,强调它们作为容器适配器的特性,默认使用deque作为底层容器。2. 常用操作函数详解,包括构造函数、push/pop、size、empty等。3. 容器适配器原理,解释如何通过封装其他容器实现栈和队列。4. 模拟实现栈和队列,展示如何用vector或list作为底层容器构建这些数据结构。5. 深入分析deque的底层结构及其优缺点,说明为何被选为默认容器。

2025-11-15 19:07:42 812

原创 【C++】1:命名空间namespace(超详细,小白必看)

C++中的命名空间(namespace)机制用于解决标识符命名冲突问题。命名空间可以定义变量、函数和类型,构成独立的作用域,与全局域互不干扰。定义方法是在全局使用namespace关键字加名称和{}。使用时可通过三种方式访问:指定命名空间(推荐)、展开特定成员(常用)、展开全部成员(不推荐)。命名空间支持嵌套定义,且多个文件中同名命名空间会自动合并。C++标准库位于std命名空间中,使用标准库时建议使用std::前缀而非全局展开。该机制有效隔离了不同代码区域的命名冲突,是C++项目管理的重要工具。

2025-11-13 19:26:54 881

原创 【C++】13:List容器模拟实现(超详细)

本文详细介绍了如何从零开始模拟实现STL中的list容器。主要内容包括: 设计list节点类; 实现迭代器类,通过运算符重载模拟指针行为; 构建list类框架,实现基本操作如插入、删除等; 解决const迭代器问题,使用模板参数优化实现; 处理迭代器失效问题,完善拷贝构造和赋值运算符; 实现多种构造函数。 文中重点讲解了list作为双向循环链表的核心实现思想,特别是迭代器对节点指针的封装技巧。通过大量代码示例展示了list各功能的实现细节。最终完成的list容器支持标准STL list的基本操作和接口。

2025-11-12 17:42:36 828 2

原创 【C++】12:List容器的理解和使用(超详细)

本文摘要: 本文详细介绍了C++标准库中的list容器。list是基于带头双向循环链表实现的序列容器,具有高效的插入删除操作,但不支持随机访问。文章全面解析了list的构造函数、迭代器类型、遍历方法、容量管理函数、元素访问接口以及丰富的增删查改操作。特别对list特有的操作进行了深入讲解,并与vector容器进行了性能对比。文章还分析了list迭代器失效问题,给出了list排序的效率优化方案,最后总结了list与vector的适用场景差异。通过学本文,读者可全面掌list容器的特性与使用方法。

2025-11-11 19:28:10 823 1

原创 【C++】11:Vector深度剖析及模拟实现

本文详细介绍了如何实现一个简化版的vector类模板,包括主要功能实现和常见问题分析。主要内容包括: vector的基本结构设计,使用_start、_finish、_end_of_storage三个指针管理内存 关键功能实现:push_back、insert、erase等操作,以及迭代器失效问题的处理 内存管理:reserve/resize函数的实现及深拷贝问题 特殊构造函数的实现,包括迭代器区间构造和n个value构造 运算符重载和类型安全问题分析,特别是针对string类型的处理

2025-10-28 15:39:20 666

原创 【C++】10:Vector的理解和使用

本文介绍了C++ STL中vector容器的基本使用方法和特性。主要内容包括:1. vector的四种构造函数(无参构造、初始化构造、迭代器构造、拷贝构造);2. 迭代器的基本用法,重点掌握begin和end;3. 空间管理函数,详细讲解了resize在不同情况下的行为;4. 元素访问方式5. 增删查改操作(push_back、pop_back、insert、erase),特别强调了insert和erase操作后迭代器失效的问题,文章通过代码示例展示了各种接口的具体用法,适合快速掌握vector的基本操作。

2025-10-28 15:35:28 629

原创 Vue02-VUE工程化开发模式

本文详细介绍了Vue工程化开发环境的搭建和使用流程。主要内容包括:1)传统开发模式与工程化开发模式的对比;2)Node.js环境配置和包管理工具的安装;3)使用Vue脚手架创建项目的具体步骤;4)项目目录结构解析及核心文件关系;5)Vue单文件组件的特点和使用方法;6)setup语法糖和响应式编程基础。文章系统讲解了从环境准备到项目创建的完整流程,重点说明了main.js、App.vue和index.html三个关键文件的作用及相互关系,并提供了简洁的setup语法示例。

2025-10-22 20:59:38 705

原创 前端6:CSS3 2D转换,CSS3动画,CSS3 3D转换

本文系统介绍了CSS3中的2D转换、动画和3D转换技术。2D转换部分详细讲解了位移(translate)、旋转(rotate)和缩放(scale)的使用方法及特性,包括坐标系、中心点设置和综合写法顺序。动画章节阐述了keyframes定义、调用方式及常见属性控制,通过实例展示动画制作过程。3D转换部分则深入讲解了三维坐标系、透视原理(perspective)、3D位移(translate3d)和旋转(rotate3d)的实现,强调transform-style属性在3D效果呈现中的关键作用。

2025-10-20 19:05:23 713

原创 前端7:综合案例--品优购项目(HTML+CSS)

本文介绍了"品优购"电商网站前端开发项目,主要包含以下内容: 项目概述:制作PC端首页、列表页和注册页面,旨在综合运用HTML5+CSS3布局技术,为后续移动端开发打基础。

2025-10-20 12:45:30 853

原创 前端5:HTML和CSS提高

HTML5与CSS3新特性摘要 HTML5新增了语义化标签(header/nav/article等)、多媒体标签(video/audio)和表单增强(新增input类型和属性)。多媒体标签支持原生音视频播放,video标签支持MP4/WebM/Ogg格式,audio支持MP3/Wav/Ogg。CSS3引入了属性选择器、结构伪类选择器(:nth-child等)和伪元素(::before/::after)。盒子模型新增box-sizing属性,过渡效果transition可实现属性动画变化。

2025-10-19 15:45:05 575

原创 前端4:CSS基础知识(3)

CSS核心特性及应用技巧摘要: CSS有三大特性:1)层叠性-解决样式冲突,遵循就近原则;2)继承性-子元素可继承父元素文本相关样式;3)优先级-通过选择器权重(如id100/类10/标签1)决定样式应用。常用技巧包括:界面样式优化(鼠标指针、表单轮廓)、垂直对齐(vertical-align)、文字溢出处理(单/多行省略号)、布局技巧(margin负值消除边框重叠、CSS三角强化实现特殊形状)。这些特性与技巧能有效提升页面视觉效果和用户体验。 (149字)

2025-10-18 21:20:36 560

原创 前端0:VSCode常用插件,快捷键,快速生成HTML结构语法,快速生成CSS样式语法,快速格式化代码

本文总结了VSCode的使用技巧,包括常用插件和快捷键。推荐安装Chinese汉化、AutoRenameTag、LiveServer等实用插件。重点介绍了复制行(Shift+Alt+↑/↓)、多选相同词(Ctrl+D)、全局替换(Ctrl+H)等高效快捷键。同时讲解了快速生成HTML/CSS代码的Emmet语法,如div>li生成嵌套标签、w200生成width:200px等。还提供了代码自动格式化设置方法,可通过Shift+Alt+F或配置保存时自动格式化提升开发效率。这些技巧能显著提高前端开发工作

2025-10-15 17:05:22 383

原创 【C++】9:string类的模拟实现

本文详细介绍了C++中string类的模拟实现过程。首先分析了string类的构成和结构设计,包括文件组织和命名空间的使用。然后逐步实现了构造函数、析构函数、遍历方法(包括[]重载、范围for和迭代器)、pushback、append、+=运算符重载等核心功能。文章还深入探讨了insert、erase、find、substr等方法的实现细节,并解决了插入位置为0时的边界问题。此外,还实现了拷贝构造函数和赋值运算符重载的现代写法,优化了性能。最后介绍了流插入和流提取运算符的重载实现,并提供了完整的代码实现。

2025-10-12 21:15:26 699

原创 前端3:CSS基础知识(2)

本文详细介绍了CSS布局中的盒子模型、浮动和定位三大核心概念。盒子模型包括边框、内外边距和内容区的设置方法;浮动用于实现元素横向排列,需注意清除浮动的影响;定位则分为相对、绝对和固定定位,重点掌握"子绝父相"原则。文章还比较了display、visibility和overflow三种元素显示隐藏方式的区别,并总结了网页布局的标准流、浮动和定位的综合应用技巧。这些知识是掌握CSS页面布局的基础核心内容。

2025-10-11 16:11:57 766

原创 前端2:CSS基础知识(1)

本文系统介绍了CSS的核心知识,主要包括:CSS基础语法、选择器(标签/类/ID/通配符等)、字体与文本样式、引入方式(内联/内部/外部)、复合选择器(后代/子/并集/伪类)、元素显示模式(块/行内/行内块)及背景属性设置。重点讲解了CSS对HTML的美化功能,包括字体控制、文本装饰、背景图片处理等,并详细比较了不同选择器和引入方式的适用场景。文章通过丰富的示例和总结表格,帮助读者快速掌握CSS的核心概念和实用技巧,为网页布局和样式设计奠定基础。

2025-10-10 21:06:13 605

原创 前端1:HTML5基础知识

本文介绍了HTML中常用的表单和列表标签。主要内容包括:1.表格标签(table、tr、td、th)的基本语法和属性,以及合并单元格的方法;2.无序列表(ul)、有序列表(ol)和自定义列表(dl)的使用方法;3.表单标签(form)的组成,包括表单域、表单控件和提示信息,重点介绍了input元素的多种类型(text、radio、checkbox等)及其属性;4.超链接标签(a)的语法格式和分类(外部链接、内部链接、锚点链接等)。这些HTML标签是构建网页内容和实现用户交互的基础元素。

2025-10-10 16:47:22 959

原创 【C++】8:string类的理解和使用

本文详细介绍了C++中的string类及其使用方法。首先分析了C语言字符串的局限性,指出string类更符合面向对象思想且使用更方便。随后讲解了string类的构造函数、遍历方式(下标、迭代器、范围for)、容量操作(resize/reserve等)、修改操作(append/insert等)及其他常用功能。文章还对比了string类swap与库函数swap的效率差异,并提供了string类的非成员函数说明。最后给出了一系列字符串相关的练习题。全文内容丰富,适合C++学习者系统掌握string类的使用。

2025-10-07 16:52:55 819

原创 【C++】7:STL简介

STL是C++标准模板库,包含数据结构和算法框架。其原始版本由HP实验室开发并开源,随后衍生出P.J.(Visual C++)、RW(C++ Builder)和SGI(GCC/Linux)等版本,其中SGI版本可读性最佳。STL由六大组件构成,是C++开发的核心工具,能显著提升开发效率。学习STL可分两个阶段:先熟练使用,再深入理解其泛型编程原理和实现细节。

2025-09-27 13:36:01 453

原创 【C++】6:模板初阶

本文介绍了C++中的泛型编程和模板技术。主要内容包括:1. 函数模板的概念、格式和使用方法,通过模板实现通用的交换函数;2. 函数模板的实例化过程(隐式实例化和显式实例化)及匹配原则;3. 类模板的定义和使用,以Stack类为例展示类模板的实现。模板技术通过编译器自动生成特定类型的代码,提高了代码复用性和可维护性,是C++泛型编程的核心。正确使用模板可以避免重复代码,同时保持类型安全性。

2025-09-20 21:53:25 902

原创 【C++】5:内存管理

C++内存管理在继承C语言malloc/free的基础上,新增了new/delete操作符。new/delete不仅管理内存分配释放,还会自动调用构造函数和析构函数,支持初始化操作。对于内置类型,new/delete与malloc/free功能类似但更安全;对于自定义类型,new会调用构造函数,delete会调用析构函数。申请数组时需使用new[]/delete[],且要注意初始化方式。

2025-09-18 21:16:26 942

原创 【C++】4:类和对象(下)

本文主要探讨了C++中的构造函数初始化列表、类型转换、static成员、友元、内部类和匿名对象等关键概念。重点介绍了构造函数初始化列表的使用规则和注意事项,包括必须使用初始化列表的场景、成员初始化顺序等。同时讲解了static成员的特性和访问方式,友元函数和友元类的作用及使用限制,内部类的定义和使用场景,以及匿名对象的特点和适用情况。这些内容对于深入理解C++面向对象编程中的封装和访问控制机制具有重要意义。

2025-09-16 19:26:27 726

原创 【C++】3:类和对象(中)

本文详细介绍了C++中类的默认成员函数及其实现方式。主要内容包括:构造函数用于对象初始化,析构函数用于资源清理,拷贝构造函数实现对象拷贝,赋值运算符重载完成对象赋值。文章重点讲解了如何根据需求实现这些函数,特别是对于需要深拷贝的类(如包含指针成员的类)。此外,还介绍了运算符重载规则、const成员函数特性以及取地址运算符重载等。通过日期类的完整实现示例,展示了如何合理设计运算符重载(如+、-、++等)和输入输出流重载,并强调const成员函数的重要性。

2025-09-13 22:31:34 1066

原创 【C++】2:类和对象(上)

本文介绍了C++中类的定义与实现,主要包括:1. 类的定义格式,包括成员变量和成员函数的声明方式;2. 访问限定符public、protected、private的作用;3. 类的实例化过程及对象内存大小计算;4. this指针的底层实现原理;5. 通过Stack类对比C++和C语言的实现差异,突出C++封装特性带来的优势。文章详细讲解了类成员在内存中的存储方式、内存对齐规则及空类对象占位机制,并通过实际案例演示了this指针的隐含传递机制。最后通过完整代码示例展示了C++类实现Stack的封装特性。

2025-09-07 11:16:41 965

原创 【C++】1:基础知识(命名空间,C++输入和输出,函数的缺省参数,函数重载,引用,内联函数,nullptr)

本文摘要:本文系统介绍了C++的核心特性,包括命名空间、输入输出、函数参数、引用和内联函数等。命名空间通过隔离作用域解决命名冲突问题;C++的输入输出流(cin/cout)比C语言的printf/scanf更智能;函数支持缺省参数和重载,提高了灵活性;引用作为变量的别名,与指针功能类似但更安全;内联函数通过编译展开减少函数调用开销;nullptr解决了NULL在C++中的二义性问题。这些特性使C++在保持高效的同时,提供了更强大的抽象能力和安全性。

2025-09-06 17:33:55 762

原创 排序的概念

本文系统介绍了常见排序算法及其实现。主要内容包括:1.排序概念与应用:解释了内部排序和外部排序的区别,以及排序在电商等场景的实际应用。2.主要排序算法:详细介绍了插入排序(直接插入、希尔排序)、选择排序(直接选择、堆排序)、交换排序(冒泡、快速排序)和归并排序的实现原理、代码示例及特性分析。3.算法特性:对比了各算法的时间复杂度(O(N^2)到O(NlogN))、空间复杂度(O(1)到O(N))和稳定性。其中快速排序综合性能最优,归并排序适合外排序,希尔排序是对插入排序的优化。

2025-09-06 10:16:01 1042

原创 数据结构--堆的实现

本文详细介绍了堆数据结构的概念、实现及应用。堆是一种基于完全二叉树的特殊结构,分为大根堆(父节点≥子节点)和小根堆(父节点≤子节点)。文章通过代码示例展示了堆的基本操作:初始化、插入(向上调整)、删除(向下调整)等核心功能,并分析了三种建堆方法的优缺点。重点探讨了堆的两个典型应用:堆排序(通过建堆和元素交换实现排序)和TOP-K问题(使用小根堆找最大前K个元素)。最后提供了完整的代码实现,包括堆结构、堆排序和TOP-K算法的具体解决方案,并通过数据验证了TOP-K算法的正确性。

2025-07-09 13:57:36 950

原创 队列的实现

本文介绍了队列的基本概念、实现方法及相关操作代码。队列是一种先进先出(FIFO)的线性表,允许在队尾插入数据,在队头删除数据。文章采用链表结构实现队列,详细描述了队列的初始化、销毁、入队、出队等核心操作,并提供了获取队头/队尾元素、判空、计算元素个数等辅助功能。代码部分包含头文件(Queue.h)、实现文件(Queue.c)和测试文件(test.c)三个模块,完整展示了队列从定义到测试的全过程。通过链表实现避免了数组结构出队时的效率问题。

2025-07-03 21:46:06 431

原创 数据结构-栈的实现

本文介绍了栈的基本概念和实现方法。栈是一种遵循后进先出(LIFO)原则的线性表,主要操作包括压栈(入栈)和出栈。文章详细讲解了动态增长栈的结构定义(包含数组、栈顶指针和容量)及核心功能实现:初始化、入栈(包含容量检查)、出栈、获取栈顶元素、判空、获取元素个数和销毁栈。最后通过括号匹配问题展示了栈的应用,并提供了完整的代码实现,包括头文件Stack.h、实现文件Stack.c和测试文件test.c。测试案例验证了栈的基本操作功能。

2025-07-03 17:08:32 486

原创 双向链表的实现

本文详细介绍了双向链表的实现原理与操作。主要内容包括:1. 双向链表的基本结构,每个节点包含前驱和后继指针;2. 核心功能实现:初始化、打印、判空、尾插尾删、头插头删、查找、插入删除节点等操作;3. 对比了顺序表和链表的存储特点、访问方式和操作效率;4. 提供了完整的C语言实现代码,包含.h头文件和.c源文件;5. 通过多个测试用例验证了各功能的正确性,包括尾插尾删、头插头删、查找和插入删除节点等操作。文章完整展示了双向链表从理论到实践的完整实现过程。

2025-07-03 11:53:02 293

原创 链表的实现

本文详细介绍了链表数据结构的概念、实现及分类。首先通过火车车厢的比喻解释了链表非连续存储的特性,阐述了节点由数据域和指针域组成的结构。然后重点展示了单链表的C语言实现,包括节点创建、打印、头尾插入/删除、查找、指定位置操作等核心功能代码,并提供了完整的测试用例。最后简要说明了链表的8种分类方式。全文通过代码示例和逻辑分析,系统性地讲解了链表的工作原理和操作方法,为数据结构学习者提供了实用的技术参考。

2025-07-02 20:59:12 797

原创 顺序表的实现

摘要:本文介绍了顺序表的基本概念、分类及实现方法。顺序表是线性表的一种实现方式,分为静态和动态两种类型,其中动态顺序表通过按需分配内存解决空间浪费问题。文章详细阐述了动态顺序表的结构定义(包含数据数组、有效数据量和容量)及其核心操作实现,包括初始化、销毁、扩容、插入(头插/尾插/指定位置)、删除(头删/尾删/指定位置)和查找等功能。最后通过测试代码验证了各项操作的正确性,展示了顺序表作为基础数据结构在实际应用中的完整实现流程。

2025-07-02 20:30:40 898

原创 C语言项目实践——贪吃蛇

手把手教兄弟们如何写贪吃蛇

2025-06-19 19:08:08 1168

原创 C语言中的文件操作

一、为什么使用文件?如果没有文件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失了,等再次运⾏程序,是看不到上次程序的数据的,如果要将数据进行持久化的保存,我们可以使用文件。二、什么是文件?在程序设计中,我们⼀般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。2.1 程序文件程序文件包括源程序文件(后缀为.c),⽬标⽂件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)2.2 数据文件。

2025-06-08 17:39:43 1188

空空如也

空空如也

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

TA关注的人

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