- 博客(28)
- 收藏
- 关注
原创 C++中的多态
即被virtual修饰的类成员函数称为虚函数。派生类中有一个跟基类完全相同的虚函数(即派生类虚函数与基类虚函数的返回值类型、函数名字、参数列表完全相同)(三同),称子类的虚函数重写了基类的虚函数。1. 必须通过基类的指针或者引用调用虚函数2. 被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写多态调用看的是指向的对象、不同对象传递过去,调用不同函数静态多态:函数重载动态多态: 继承中虚函数重写+父亲指针调用更方便和灵活的多种形态调用抽象类强制重写了虚函数,另外抽象类体现了接口继承关系。
2025-11-02 12:34:05
820
原创 C++中的继承
本文系统介绍了面向对象编程中的继承机制。首先阐述了继承的定义,即派生类复用基类特性的方式,重点分析了不同继承方式下成员访问权限的变化。文章详细探讨了基类与派生类间的赋值转换、作用域规则、默认成员函数处理等核心概念,并比较了单继承、多继承及菱形继承的特点。针对菱形继承带来的数据冗余问题,介绍了虚拟继承的解决方案。最后,文章对比了继承与组合两种代码复用方式,指出继承会破坏封装性、增加耦合度,建议优先使用组合方式,仅在需要实现多态等特定场景下采用继承。全文系统梳理了继承机制的关键知识点,并提供了实际应用中的优化建
2025-10-12 14:46:30
1045
原创 Linux开发工具
vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、windows。
2025-09-21 16:44:16
919
原创 Linux的权限
指令:su[用户名]功能:切换用户要从root用户切换到普通用户user,则使用 su [user]。要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。
2025-09-14 21:05:47
704
原创 Linux常见指令
本文总结了Linux系统常用命令及其功能,涵盖文件操作、目录管理、时间查看、搜索筛选、压缩解压等核心操作。主要包括:ls、pwd、cd等基础命令;mkdir、rmdir、rm等目录操作命令;touch、cp、mv等文件管理命令;cat、more、less等文件查看命令;head、tail日志查看命令;date、cal等时间相关命令;find、grep搜索筛选命令;zip、tar压缩解压命令;以及关机、热键等系统操作。每个命令都详细说明了语法格式、常用选项和典型应用场景,是Linux系统操作的实用参考手册。
2025-09-14 13:37:05
987
原创 C++容器:stack和queue
队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器一端插入元素,另一端提取元素。队列作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的成员函数来访问其元素。元素从队尾入队列,从队头出队列。底层容器可以是标准容器类模板之一,也可以是其他专门设计的容器类。标准容器类deque和list满足了这些要求。默认情况下,如果没有为queue实例化指定容器类,则使用标准容器deque。queue文档。
2025-09-13 22:36:14
982
原创 C++容器:list
list是双向带头链表在阅读list文档时会发现list有自己sort函数因为list的迭代器属于双向迭代器,而std算法库里的sort是使用随机迭代器的,所以list不适合用std算法库里的sort。但是list的sort底层是归并排序效率比不过算法库里的sort,如果遇到少量数据可以使用list的sort,遇到大量数据可以将list的数据放到vector中使用std算法库的sort排序。
2025-09-09 20:58:23
862
原创 C++容器:vector
vector文档注意事项:错误初始化正确初始化:注意:拷贝构造不能使用memcpyvector是深拷贝,但是vector空间上存的对象是string的数组使用memcpy导致string对象的浅拷贝解决方案:T是string这样深拷贝的类,调用的是string复制重载,实现的string对象的深拷贝使用insert后对迭代器的使用使用erase后对迭代器的使用vector erase和insert迭代器对象后,不能再访问这个迭代器,我们认为他失效,访问结果是未定义的
2025-09-09 19:51:30
806
原创 C/C++内存管理
new和delete是用户进行动态内存申请和释放的操作符,operator new 和operator delete是系统提供的全局函数,new在底层调用operator new全局函数来申请空间,delete在底层通过operator delete全局函数来释放空间。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。malloc/free和new/delete的共同点是:都是从堆上申请空间,并且需要用户手动释放。
2025-07-24 18:44:38
707
原创 类和对象(C++)
class为定义类的关键字类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。(1)声明和定义全部放在类体中,需要注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。(2)类声明放在.h文件中,成员函数定义放在.cpp文件中,
2025-07-13 22:22:13
888
原创 排序(C语言)
假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次 序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排 序算法是稳定的;否则称为不稳定的。数据元素全部放在内存中的排序。数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。插入排序,选择排序,交换排序都属于内部排序;归并排序既是内部排序也是外部排序;他们全都是比较排序,计数排序是非比较排序。
2025-05-04 22:15:39
1040
原创 二叉树(C语言)
kn-1},把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足:ki <= k2*i+1 且 ki <= k2*i+2(ki >= k2*i+1 且 ki >= k2*i+2) ,i = 0,1。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。如上图:树的度为6 节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推。若一个节点含有子节点,则这个节点称为其子节点的父节点。一个节点含有的子树的根节点称为该节点的子节点;从根到该节点所经分支上的所有节点。
2025-05-04 16:53:49
952
原创 栈和队列(C语言)
队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出 FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头。与栈不同,栈取数据的顺序与取数据的先后有关,而队列与数据进入的先后有关,中途取数据不影响顺序。队列也可以数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数组头上出数据,效率会比较低。//获取队列中有效元素的个数。//获取队列中有效元素的个数。
2025-04-05 17:47:18
982
原创 C语言中文件的读写
SEEK_SET从开始的位置、SEEK_END从文件末尾位置、SEEK_CUR从当前光标位置。这样scanf/fscanf或者printf/fprintf的作用就是一样的了。如果是文件是遇到文件末尾而结束返回非零的值。让文件的指针的位置回到文件的起始位置。返回指针相对于起始位置的偏移量。三、文件读取结束的判定。若果是遇到错误返回0。
2024-12-26 18:39:35
260
原创 C语言中的文件操作
每个被使⽤的文件都在内存中开辟了⼀个相应的⽂件信息区,⽤来存放文件的相关信息(如文件的名 字,文件状态及文件当前的位置等)。程序员的数据需要输出到各种外部设备,也需要从外部设备获取数据,不同的外部设备的输入输出操作各不相同,为了方便程序员对各种设备进行方便的操作,就有了流这一抽象概念,我们可以把流想像成流淌着字符的河。文本文件:在外存的上以ASCII码的形式存储,需要在存储前转换,以ASCII字符的形式存储的文件就是文本文件。二进制文件:数据在内存中以二进制的形式存储,不加转换的输出到外存的文件。
2024-12-24 18:00:52
786
原创 C语言中的字符函数
他们的头文件是 #include <ctype.h>头文件也是 #include <ctype.h>它们的返回值是整型是因为字符是一种特殊的整型。
2024-12-22 10:55:07
187
原创 C语言中的字符串函数
3.strcmp函数和strncmp函数(它们比较的不是字符串长度,而是对应位置上的字符的大小)1.strcpy函数/strncpy函数。
2024-12-22 10:41:52
231
原创 C语言的编译和链接
在C语言中程序员写的代码需要经过一系列复杂的流程才能变为可执行程序,这些复杂的过程一般都是有编译器来实现的。程序必须载⼊内存中。
2024-12-22 09:51:55
200
原创 C语言中浮点数的存储
如果E为8位,它的取值范围位0~255;但是,科学计数法中的E是可以出现负数的,所以IEEE 754规定,以32位浮点数为例,留给M只有23位,将第一位的1 舍去以后,等于可以保存24位有效数字。64位浮点数(double),最高的1位存储符号位S,接着的11位存储指数E,剩下的52位存储有效数字M。(比如,3^7的E是7,所以保存成32位浮点数时,必须保存成7+127=134,即10000110。32位浮点数(float),最高的1位储存符号位S,接着的8位存储指数E,剩下的23位存储有效数字M。
2024-12-21 18:10:12
463
原创 C语言中的指针
指针变量的本质是向内存中申请的空间也就是地址,而编译器不看变量的名字,编译器是通过地址找内存单元的,所以变量的名字仅仅是写给程序员的。•指针类型:指针的类型决定了对指针解引用的时候有多大权限(一次能操作几个字节);决定了指针向前向后走一步的距离。•数组和字符串操作:指针可以用于遍历和操作数组和字符串,因为数组名本身就是指向数组首元素的指针。也有二级指针三级指针,也就是二级指针中存放一级指针的地址,而三级指针存放二级指针的地址。指针指向的位置是不可知的、随机的、不确定的、没有明确限制的就会变为野指针。
2024-11-28 22:31:47
235
原创 C语言中的分支与循环
分支结构可以嵌套在循环语句中,循环结构也可以嵌套在分支语句中,他们相辅相成,相得益彰。可以实现循环结构的有for循环、while循环和do-while循环。刚学习完分支与循环,让我初识C语言的魅力,想继续领略C语言的奥妙。分支与循环是C语言中控制程序执行的两种基本方式。在写C语言程序中对分支与循环的灵活运用至关重要。可以实现分支结构的有if语句和while语句。
2024-10-24 20:38:48
113
原创 初识C语言,也是第一次博客
准备用心学习C语言,将理论与实践并行,打算每天花两三个小时,毕竟大专的时间相对宽松。对C语言的难度暂时还是未知,经过高中的不愉快,决定悬崖勒马不再一意孤行,毕竟因为只考上大专见到太多家人的眼泪,会听从别人的建议,也有了更强大的抗压能力,我坚信C语言的难度不会压倒我!我是一个大专学生,因为高考前种种原因与班主任有些矛盾,一气之下就不去学校了,家人劝我去学校也没有劝动,决定在家自学,结果可想而知。目前学习C语言的目标是在专升本专业课取得好成绩,以后想做做软件游戏之类的。
2024-10-15 17:58:35
132
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅