自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 c++多态的详细解析

1、不满足多态 — 看调用着者的类型,调用这个类型的成员函数2、满足多态 — 看指向的对象的类型,调用这个类型的成员函数。。编译器在编译时依据函数的参数类型、数量、顺序、const性质等信息来决定哪个函数被调用。。在运行时,由具体的对象类型和实参来决定哪个函数被真正调用,而不是在编译期就确定了的。这种多态性需要在类定义时使用 virtual 关键字声明虚函数。通过派生类覆盖基类的虚函数来实现多态。需要注意的是,模板虽然也可以实现多态性,但是它是编译时的多态性,不属于运行时多态性。

2023-06-20 21:23:46 506

原创 浅谈c++的继承

/private: 在子类中不可见(完全不能用) 只能防外人 //protected: 在子类中是可见的。既能防外人,也能防儿子基类private成员在派生类中无论以什么方式继承都是不可见的。这里的不可见是指基类的私有成员还是被继承到了派生类对象中,但是语法上限制派生类对象不管在类里面还是类外面都不能去访问它。比如说父亲的隐私,就算是他儿子,也不能去访问。protected是防外人,privateb不仅是防外人,而且防儿子并不能直接使用,但能通过基类的函数去调用需要经过父亲的同意。

2023-06-18 10:43:44 110

原创 Linux进程与文件系统

cd ../ cd / 之类的命令让bash自己执行的命令,称之为内建命令/内置命令。几乎所有的环境变量的命令,都是内建命令。在Linux中,内建命令是指已经集成在shell程序中的命令,它们的执行不需要加载外部程序,可以直接在命令行上运行。这些内部命令的执行速度通常比外部命令更快,因为它们不需要去磁盘加载外部程序。可以使用内建命令的好处是它们快速,并且可以与系统的环境变量和其他属性进行交互,并且更容易维护。

2023-06-01 22:21:07 146

原创 c++AVL树(也称高度平衡搜索二叉树)

注:这里使用了平衡因子。int _bf;// 平衡因子{}

2023-05-12 17:37:59 108

原创 Linux进程控制和进程等待

父进程等待子进程退出的过程等待:就是通过系统调用,获取子进程退出码或者退出信号的方式,顺便解决内存泄漏的问题。

2023-04-13 20:32:36 48

原创 c++内存管理和模板类型

new的原理new是一个操作符,malloc是一个函数1. 调用operator new函数申请空间2. 在申请的空间上执行构造函数,完成对象的构造delete的原理1. 在空间上执行析构函数,完成对象中资源的清理工作2. 调用operator delete函数释放对象的空间new T[N]的原理1. 调用operator new[]函数 -》封装malloc ,在operator new[]中实际调用operator new函数完成N个对象空间的申请2. 在申请的空间上执行N次构造函数。

2023-04-10 21:48:15 67

原创 c语言的堆二叉树

树种所有的父亲都大于等于孩子:树的所有的父亲都小于等于孩子父亲和孩子下标的关系如果算得的数超出数组范围,就说明它没有孩子左孩子一定是奇数位,右孩子一定是偶数位任何一个数组都是完全二叉树,但不一定是堆。堆可以是数组,也可以是链表:根是大堆中最大的数:根是小堆中最小的数1、根的位置跟最后一个交换,方便删除2、向下调整向上建堆调整的时间复杂度为:n*log(n)向下建堆调整的时间复杂度为:n向下调整的好处是个数少(调整少的) 向上调整是个数多,调的多。

2023-04-01 23:16:16 46

原创 c++类和对象

class为定义类的关键字ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。这个函数并不是全局函数,它是这个类的函数。class Stack //在定义类的时候推荐不要使用默认,将自己需要的去定义 即可public://成员函数private://成员变量int* a;int size;exit(-1);size = 0;

2023-03-28 16:42:15 78

原创 总结部分排序

加入三数取中后,快排瞬间从最坏的情况跳到最好的情况,这样下的快排几乎不会出现最坏情况,这样的情况下,快排的时间复杂度可以看做是。重复上序操作,如果cur出现越界,将key的值指向目前prev的位置,并继续进行上序操作,直至prev指针访问的最后一个值。用rangeN标记每次归并的数据个数,从一开始,因为一个数据可以认为是有序的,可以直接归并,并不需要多加判断。将第一坑位置的值先交给key,右边找小于key的值并将小于key的值交给坑位置,然后该位置形成一个新的坑。

2023-03-26 22:55:51 40

原创 Linux的-gdb的使用

continue(或c):从当前位置开始连续而非单步执行程序,从一个断点出,直接运行到下一个断点处。数据在输出之前会先放入到数据缓冲区里,当程序运行完毕后,数据缓冲区内的数据会释放出来。list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。\r :回车,会使光标会到开头,重新输入后,会覆盖当前头的数据(第一个字符)print(p):打印表达式的值,通过表达式可以修改变量的值或者调用函数。set var n = XXX:修改变量的值,设置一个变量为特定的值。

2023-03-21 21:08:53 51

原创 时间,空间复杂度和堆二叉树的基本理解

但是,只有你将你的程序在你的设备中运行起来,才能知道它到底花费了多少时间,并且在每一个机器上的运行时间可能都不一样,所以很难确定其所花费的具体时间。实际上当 n开始变得很大的时候,其余两项加起来的值对第一项的影响很小,所以通常疏略不记,俗称取极限值,所以在计算时间复杂度时,其实并不一定要对计算的次数进行准确计算,而只需要求。大O渐进分析法一般给予的是这个函数的上界,但不是上确界,它表示的是算法计算所表现的一个最坏的执行结果,这就保证了算法的运行时间一般小于这个时长。:具有相同父节点的节点互称为兄弟节点;

2023-03-19 15:13:52 388

原创 c语言双向循环链表

pragma once # include # include # include // 带头+双向+循环链表增删查改实现 typedef int LTDataType;// 创建返回链表的头结点. ListNode * ListCreate();// 双向链表销毁 void ListDestory(ListNode * pHead);// 双向链表打印 void ListPrint(ListNode * pHead);

2022-12-29 16:38:36 277

原创 Linux权限和部分指令

于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装.,因为新创建的文件不能有执行权限,只能在创建后通过chmod命令(chmod是Linux系统管理员最常用到的命令之一,用于改变文件或目录的访问权限)给文件增加执行权限。:当前目录的所有文件及其目录,后面可以加上你要删除的内容的后缀,及你自己写上的后缀名,即可删除你所输入的后缀名的文件及目录。-v :压缩的过程中显示文件!

2022-12-15 20:31:57 94

原创 程序的环境处理和预处理指令

define _CRT_SECURE_NO_WARNINGS 1 # define MIN 0 //这里定义最小值,可以防止后面的重复定义,它会将文件中所以的MIN转换成 0 # include int main() {return 0;}1。

2022-11-12 18:38:35 105

原创 c语言动态内存管理

在C语言中,编写程序的时候不能确定内存变量应该定义为多大,程序员希望在程序运行的时候根据数据量的大小向系统动态获得内存空间。所谓动态内存管理,就是指在程序执行的过程中动态地申请和回收内存空间。动态内存管理不像变量和数组那样在程序编写时预先分配内存空间,而是根据程序的需要即时分配,而且分配的内存大小就是程序要求的大小。C语言允许程序动态申请内存,用于存放一些数据,需要时随时开辟,不需要时随时释放。C语言中,内存的动态分配是通过系统提供的库函数来实现的,主要有。

2022-10-17 22:20:48 198

原创 c语言文件操作

当程序终止时,整个数据都会丢失,即使程序终止,存储在文件中也会保留您的数据。如果要输入大量数据,通常需要很长时间才能全部输入。如果您有一个包含所有数据的文件,您可以使用 C 中的几个命令轻松访问文件的内容。您可以轻松地将数据从一台计算机移动到另一台计算机,而无需进行任何更改。计算机可以在各种存储介质(诸如磁盘、磁带和光盘)上存储信息。为了方便使用计算机系统,操作系统提供了信息存储的统一逻辑视图。操作系统对存储设备的物理属性加以抽象,从而定义逻辑存储单位,即文件(file)。

2022-10-11 18:05:50 226

原创 结构体、位段、枚举、联合体

结构体常被用于描述相对复杂的对象,其内容可以表示很多用单一数据无法表示的各种数据。结构体类型不是由系统定义好的,而是需要程序设计者自己定义的。C语言提供了关键字struct来标识所定义的结构体类型。(1)在定义结构体变量的时候,可以对其成员进行一定的初始化;也可以在声明这个结构体之后,对这个结构体类型的变量进行初始化。1.在声明定义的同时定义变量​{int num;};b1,b2​2.在声明定义结构体后,再定义该类型的变量​​{int num;};​。

2022-10-06 17:12:10 388

原创 实现部分库函数(strlen、strcpy、strcmp、strcat、strstr...)

库函数一般是指编译器提供的可在c源程序中调用的函数。可分为两类,一类是c语言标准规定的库函数,一类是编译器特定的库函数。由于版权原因,库函数的源代码一般是不可见的,但在头文件中你可以看到它对外的接口库函数简介。C语言的语句十分简单,如果要使用C语言的语句直接计算sin或cos函数,就需要编写颇为复杂的程序。因为C语言的语句中没有提供直接计算sin或cos函数的语句。又如为了显示一段文字,我们在C语言中也找不到显示语句,只能使用库函数printf。

2022-10-02 16:58:11 321

原创 原码、反码与补码的详解

1.计算机只能定向识别二进制语言。2.计算机底层存储数据,存储的是二进制补码。原因:存储补码的效率最高。i + j;//00000000000000000000000000000001 - 1的原码//10000000000000000000000000000001 - -1的原码return 0;}如图所示我们将会得到一个-2,而不是得到我们想要的零。注:对于有符号的数,其二进制的首位是符号位,1 表示为负数,0 表示为正数。

2022-09-25 16:41:22 327

原创 C语言实现扫雷游戏(详解和具体代码)

扫雷游戏是我童年的回忆,我感觉对我的感触还挺深的,在这里实现一下扫雷游戏,致敬我那回不去的童年。

2022-09-21 18:20:58 790

原创 用c语言简单实现通讯录(详解和具体代码)

通讯录是我们用来找寻相关人信息的一种手段,我们可以通过它找到我们想要找到的人的各种信息,类似于姓名、性别、电话号码和住址等等,它也可以用于存储我们想要存储人的信息,对我们的帮助不小。

2022-09-20 19:30:29 3170 1

原创 用C语言写三子棋(详解,含具体代码)

三子棋是我们小时候常玩的小游戏,它的游戏方法比较简单,就是在一个棋盘上分先后手,下放不同位置的棋子,当你有三个棋子连接到一条线上(横向、竖向、斜向均可),你就赢得了比赛,简而言之是比较容易的,下面我们通过C语言实现它(这里是实现玩家与电脑对下,电脑随机落子)。提示:以下是本篇文章正文内容,下面案例可供参考。

2022-09-17 11:04:57 943 2

原创 计算机的第一次

我是一名来自长沙的普通大学生,现在学习的是计算机专业,我也想说要在这条路上付出很多的努力,希望以后都能保持自己现在的心态去学习,去见识更广阔的人生,可能这比较好笑,但这就是我的理想状态了。...

2022-07-15 19:54:44 94

空空如也

空空如也

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

TA关注的人

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