- 博客(21)
- 收藏
- 关注
原创 【C++】多态
本文介绍了C++多态的概念、实现条件及虚函数的特性。多态指不同对象调用同一函数产生不同行为,构成条件包括通过基类指针/引用调用虚函数、派生类对虚函数进行重写。虚函数需用virtual修饰,重写要求函数名、参数和返回值相同(协变例外)。析构函数重写时基类需声明virtual。C++11引入final防止重写、override检查重写。多态实现了代码的灵活扩展,是面向对象的重要特性。
2025-11-07 21:04:00
1507
原创 【C++】模板进阶 | 继承
一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。但是我们自从学了STL容器后,模拟的每一个容器都不会将它分为.h和.cpp的分离编译的模式,这是什么原因呢?下面我们来看看一下类模板的分离编译会出现什么样的问题。【优点】模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生增强了代码的灵活性【缺点】模板会导致代码膨胀问题,也会导致编译时间变长。
2025-10-30 20:30:36
1357
原创 【C++】priority_queue、仿函数和反向迭代器
优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的。此上下文类似于堆,在堆中可以随时插入元素,并且只能检索最大堆元素(优先队列中位于顶部的元素)。优先队列被实现为容器适配器,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的成员函数来访问其元素。元素从特定容器的“尾部”弹出,其称为优先队列的顶部。底层容器可以是任何标准容器类模板,也可以是其他特定设计的容器类。
2025-10-29 10:57:42
1148
原创 【Linux】进程状态|优先级|进程切换|环境变量
而进程运行的时候一定会产生很多的临时数据,但这些临时数据只属于当前进程,虽然CPU内部只有一套寄存器硬件,但是寄存器保存的数据只属于当前进程,也就是说,寄存器硬件不是寄存器内的数据,这是两码事,寄存器被所有进程共享,但是寄存器里的数据时每个进程各自私有的。进程切换的时候,需要先进行上下文保护,这里的上下文指的是CPU里的寄存器的数据,而不是寄存器,这里简单理解为临时数据保存至PCB里,而当进程恢复运行的时候,要进行上下文的恢复,该进程在次回到CPU继续运行时,重新加载恢复这些数据。一个CPU一个运行队列。
2025-10-28 19:09:38
1322
原创 【Linux】操作系统&进程概念
当我和我的朋友同时打开QQ时,我们的QQ其实已经被加载到内存中了,然后当我们在对话框中输入消息时,我们的数据已经被输入到内存中了,下面我们的数据在内存中被加密计算,计算完之后将数据返回到内存,然后显示到输出设备,也就是我们的显示器和网卡上,这时我们就可以在显示器上看到我们所发送的消息了。而校长只要管理好我们学生的这些数据,就能将学生管理起来了,所以管理的本质就是对数据做管理。所以说,程序的运行必须加载到内存中,因为CPU想要执行我们的程序,访问我们的数据,就必须从内存中读取,这是冯诺依曼体系结构规定的。
2025-10-25 21:35:35
2832
2
原创 【C++】list的使用 模拟实现
本文介绍了STL中list容器的使用与模拟实现。list是基于双向循环链表实现的序列式容器,支持高效的头尾插入删除操作,但不支持随机访问。文章详细讲解了list的构造、迭代器、增删查改等操作,并分析了其优缺点。在模拟实现部分,重点阐述了节点结构设计、迭代器封装(包括普通迭代器和const迭代器)以及基本操作如push_back的实现原理。通过运算符重载使迭代器支持指针类似操作,体现了STL容器设计的通用性和灵活性。
2025-10-22 19:35:35
1181
原创 【C++】stack|queue|deque
stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。判空操作获取尾部元素操作尾部插入元素操作尾部删除元素操作标准容器vector、deque、list均符合这些需求,默认情况下,如果没有为stack指定特定的底层容器,默认情况下使用deque。
2025-10-19 15:30:06
1242
原创 【C++】vector的使用及其模拟实现
vector是C++中一种动态数组容器,支持高效的元素访问和尾部增删操作。它使用连续存储空间,通过下标访问元素,容量可动态增长,但非尾部插入删除效率较低。常用操作包括构造函数、迭代器遍历、容量管理(reserve/resize)以及增删查改(push_back/pop_back/insert/erase)。不同STL版本(vs/g++)扩容机制不同(1.5倍/2倍)。vector自带swap函数优化了算法库swap的深拷贝问题。实际使用时需注意其空间增长策略和操作效率特点。
2025-10-15 15:56:55
1220
原创 【C++】string的使用及其模拟实现
STL是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。
2025-10-12 14:31:30
1316
原创 【C++】类和对象(中)
虽然编译器会给我们自动生成一个默认构造函数来完成初始化,但是为什么初始化的结果是一个随机值呢?这是因为构造函数对内置类型不做处理。下面我们会讲。💕。
2025-10-05 10:42:55
1430
原创 【C++】类和对象(上)
类是对现实生活中一类具有共同特征的事物的抽象。如果一个程序里提供的数据类型与应用中的概念有直接的对应,这个程序就会更容易理解,也更容易修改。类的内部封装了属性和方法,用于操作自身的成员。类是对某种对象的定义,具有行为(behavior),它描述一个对象能够做什么以及做的方法(method),它们是可以对这个对象进行操作的程序和过程。它包含有关对象行为方式的信息,包括它的名称、属性、方法和事件。// 类体:由成员函数和成员变量组成// 一定要注意后面的分号class为定义类的关键字ClassName。
2025-10-04 22:26:55
1228
原创 【Linux】Linux命令行git和Linux调试器-gdb的使用
本文介绍了Linux环境下Git版本控制工具和GDB调试器的基本使用。首先讲解了Git作为分布式版本控制系统的作用,并通过Gitee平台演示了仓库创建、克隆到本地等操作。重点介绍了Git的"三板斧"操作:git add(添加到暂存区)、git commit(提交到本地仓库)和git push(推送到远端)。其次,文章详细说明了Linux调试器GDB的使用方法,包括debug与release版本的区别,以及常用调试命令如断点设置(b)、查看断点(info b)、单步执行(n/s)、变量监控
2025-10-03 14:03:47
1092
原创 【Linux】项目自动化构建工具—make/makefile
make是一个命令工具,是一个解释makefile中指令的命令工具,那么究竟什么是makefile呢?其实,在一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作作。makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。其实,总的来说,
2025-09-29 15:21:07
1425
原创 【Linux】编译器-gcc/g++使用
Linux中的gcc是由GNU推出的一款功能强大的、性能优越的多平台编译器。gcc编译器能将C、C++语言源程序和目标程序编译、连接成可执行文件。那么gcc和g++的区别又是什么呢?只要是 GCC 支持编译的程序代码,都可以使用 gcc 命令完成编译。可以这样理解,gcc 是 GCC 编译器的通用编译指令,因为根据程序文件的后缀名,gcc 指令可以自行判断出当前程序所用编程语言的类别。但如果使用 g++ 指令,则无论目标文件的后缀名是什么,该指令都一律按照编译 C++ 代码的方式编译该文件。
2025-09-27 19:02:21
1354
原创 C++ 入门 (超详细)
C++是在C语言基础上发展而来的面向对象编程语言,由Bjarne Stroustrup在1982年开发。它既支持C语言的过程化编程,又引入了面向对象特性,解决了大规模程序的抽象问题。C++提供了63个关键字(C语言32个),新增了命名空间机制避免命名冲突,支持三种命名空间使用方式。此外,C++优化了输入输出流(cin/cout),并引入缺省参数概念,包括全缺省和半缺省两种形式,但需注意半缺省参数必须从右向左定义且不能同时在声明和定义中指定缺省值。这些特性使C++成为更强大的编程语言。
2025-09-26 14:39:51
3823
原创 【Linux】软件包管理器yum和编辑器vim
软件包 (SoftWare Package)是指具有特定的功能,用来完成特定任务的一个程序或一组程序。当我们下载软件之前需要先把软件包下载下来,但是软件包并不在我们本地的电脑上,而是在别人的电脑上,也就是远端的服务器或者云服务器上。Linux系统的软件一般都是开源的,这些开源软件一般会放在开源软件对应的服务器上,当然不同的社区在在自己的Linux中已经内置了服务器和应用对应的下载链接了,yum就是使用下载链接的软件,也就相当于我们手机里的应用商店。
2025-09-24 22:29:11
1204
原创 Shell运行原理及Linux中权限
Linux系统中的Shell是用户与操作系统内核交互的命令行解释器,负责将用户指令传递给内核并将结果返回。Linux权限管理分为超级用户(root)和普通用户,通过su和sudo指令切换身份。文件权限分为拥有者、所属组和其他用户三类,通过chmod命令可修改权限(如r读、w写、x执行)。文件类型由首字符标识(如d目录、-普通文件),与后缀名无关,可通过file指令查看文件类型。权限管理机制有效保护了系统安全和用户数据隔离。
2025-09-22 21:30:51
1348
原创 Linux 常用命令汇总(超全面!超详细!)
本文介绍了Linux系统中常用的文件与目录操作指令。ls指令用于列出目录内容,支持多种选项如-a显示隐藏文件、-l显示详细信息等。pwd显示当前工作目录路径。cd用于切换目录,支持绝对路径和相对路径。tree以树状结构展示目录内容。touch可创建新文件或更新文件时间戳。mkdir用于创建目录,-p选项可递归创建多级目录。rmdir删除空目录,而rm可删除非空目录。文章详细说明了各指令的语法、功能及常用选项,并配以具体操作示例,帮助读者掌握Linux基础文件管理命令。
2025-09-21 17:21:35
2281
原创 Linux入门(1)
本文介绍了计算机操作系统的基本概念及其管理功能,并详细讲解了Linux系统中的文件分类(普通文件和目录)和常用基础指令。重点解析了ls指令的多种选项(如-l、-a、-R等)及其功能,cd指令的路径切换方法(绝对路径/相对路径),以及pwd、tree、touch、mkdir等指令的使用方式。文章还说明了如何通过stat查看文件详细信息,并提供了创建文件和目录的具体操作示例。这些内容为Linux系统操作提供了基础指导。
2025-09-17 19:30:08
999
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅