自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++多态总结与原理、菱形继承问题

生活中的多态,是指的客观的事物在人脑中的主观体现。例如,在路上看到一只哈士奇,你可以看做是哈士奇,可以看做是狗,也可以看做是动物。主观意识上的类别,与客观存在的事物,存在is a的关系的时候,即形成了多态。在程序中,一个类的引用指向另外一个类的对象,从而产生多种形态。当二者存在直接或者间接的继承关系时,父类引用指向子类的对象,即形成多态。多态是面向对象三大特性之一,记住继承是多态的前提,如果类与类之间没有继承关系,也不会存在多态。多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。

2024-05-27 12:28:49 913 2

原创 C++继承总结

继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。public:protected:// 姓名// 年龄protected:int _stuid;// 学号protected:int _jobid;// 工号int main()

2024-05-23 12:21:45 733 1

原创 Linux信号概念,信号的产生异常情况,信号的保存,信号的处理,捕捉信号,可重入函数,volatile,SIGCHLD信号

Linux信号概念,信号的产生异常情况,信号的保存,信号的处理,捕捉信号,可重入函数,信号角度理解volatile,理解子进程向父进程发送SIGCHLD信号

2024-05-14 09:39:49 780 4

原创 Linux进程间通信 && pipe && 实现线程池 && 命名管道 && 实现打印日志 && 共享内存代码验证 && 消息队列 && 信号量

Linux进程间通信pipe的使用,用C++实现模拟线程池,命名管道的创建以及通信,最后实现打印日志

2024-05-11 18:08:23 799 5

原创 Linux理解文件操作 && 文件描述符fd && 理解重定向 && dup2 && 缓冲区 && C语言实现自己的shell

我们在平时使用的C/C++/Java的时候,我们所用的文件操作都是封装系统接口来进行供我们操作,我们在使用这些接口,本质上就是在访问硬件,也就是磁盘一个硬件设备是如何被函数接口的调用访问到的呢?当然是通过操作系统,操作系统是管理硬件设备的,在我们学的C/C++/Java等等语言所封装的文件操作接口,都必须通过操作系统的允许,才可以访问到磁盘这个硬件设备,而操作系统是不相信任何用户的,所以为了能够得到操作系统的允许,我们又必须提供一些系统调用接口,供操作系统和用户打交道。

2024-05-04 21:18:19 652 2

原创 Linux动态库和静态库

动态库在多个程序间共享,节省了磁盘空间,操作系统采用虚拟内存机制允许物理内存中的一份动态库被要用到该库的所有进程共用,节省了内存和磁盘空间。动态库是程序在运行的时候才去链接相应的动态库代码的,多个程序共享使用库的代码。如果程序不知道其所使用的动态库的路径, 那么进程在运行时, 操作系统就不能根据程序把动态库加载到内存中。我们知道, 动态库在链接时是不会将代码加载到程序中的, 只会将代码以一个相对地址的形式加载到程序中。如果动态库不能被加载到内存中, 进程的虚拟地址空间的共享区就不能指向动态库的代码。

2024-04-29 19:45:23 655 1

原创 C++模板进阶详解 ——非类型模板参数,模板特化和模板分离编译

一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。【优点】模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生增强了代码的灵活性【缺陷】模板会导致代码膨胀问题,也会导致编译时间变长出现模板编译错误时,错误信息非常凌乱,不易定位错误。

2024-04-27 21:53:59 947 1

原创 Linux文件系统 && 软硬链接

如果使用512KB,可能会进行更多次数的IO,造成效率降低,而且如果操作系统使用和磁盘一样的大小,万一磁盘基本大小变化了,OS的源代码也需要改变,所以OS有自己一套的规定,这样就完成了软件和硬件的解耦。字节的空间,保存的是对应特定文件的属性,该块组内,所有文件的inode空间的集合,需要标识唯一性,每一个inode块,都要有一个inode编号。一般而言一个文件,一个。它的内部也是一个位图,每一个比特位和 特定的inode是一一对应的,如果该比特位为1,说明该inode已经被占用,否则表示空闲可用。

2024-04-21 10:13:43 810 2

原创 C++模板初阶详解 —— 函数模板与类模板

该语句不能通过编译,因为在编译期间,当编译器看到该实例化时,需要推演其实参类型通过实参a1将T推演为int,通过实参d1将T推演为double类型,但模板参数列表中只有一个T,编译器无法确定此处到底该将T确定为int 或者 double类型而报错。如果在C++中,也能够存在这样一个模具,通过给这个模具中填充不同材料(类型),来获得不同材料的铸件(即生成具体类型的代码),那将会节省许多头发。函数模板是一个蓝图,它本身并不是函数,是编译器用使用方式产生特定具体类型函数的模具。模板是泛型编程的基础。

2024-04-16 10:04:00 1032 1

原创 Linux进程的优先级&&环境变量&&上下文切换&&优先级队列

如何设置本地变量呢?但是使用【echo】命令还可以查看到,因为echo是可以操作环境变量的,所用echo命令是可以操作所有的变量的,不管是本地变量还是环境变量。,这个nice值有正负数,我们可以举一个例子:一个进程的PRI为80,我们给NI值为-10,再根据上面的公式得出新的PRI为70。因为PRI是系统内核去动态调整的,我们修改后需要经过内核的允许,如果这个PRI值超过了内核的最大限度,那么这个值就会保留在。我们发现使用env来查看我们设置的变量,并不能显示出结果,证明了我们刚刚设置的变量是本地变量。

2024-04-03 09:37:10 1607 83

原创 Linux之进程控制&&进程终止&&进程等待&&进程的程序替换&&替换函数&&实现简易shell

所以如果我们模拟实现的shell也想实现cd改变路径的功能,实际上是不可以创建子进程的,因为子进程程序替换执行cd,父进程的工作目录是没有改变的,所以直接将这一种情况单独拿出来进行判断,在这种情况下,直接让父进程执行cd命令,修改父进程的工作目录即可。在模拟shell的实现代码中,cd到其他目录,pwd之后的路径实际上是没有变化的,因为pwd实际上pwd的是父进程shell的路径,而父进程的cwd路径始终是未改变的,而执行cd命令的是子进程,所以子进程的cwd路径是会改变的。这就是进程之间的独立性。

2024-03-28 15:54:04 1418 83

原创 Linux进程地址空间详解

我们在学习C/C++的时候用到的地址是什么地址呢?虚拟地址?物理地址?本文就来寻找一下答案~

2024-03-23 18:23:45 961 96

原创 Linux手动创建用户不使用useradd【七步走完成】

Linux手动创建用户七步走

2024-03-21 12:21:03 1823 73

原创 C语言之数据在计算机内部的存储

前面我们已经学习了基本的内置类型:以及他们所占存储空间的大小~~使用这个类型开辟内存空间的大小(大小决定了使用范围)如何看待内存空间的视角在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8 bit但是在C语言中除了8 bit的char之外,还有16 bit的short 型,32 bit的long型(要看具体的编译器),另外,对于位数大于8位的处理器,例如16位或者32 位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如何将多个字节安排的问题。

2024-03-18 19:28:30 1560 86

原创 C++STL详解(一)——string的介绍及使用

本文学习了C++中的string类,简单的介绍了几个比常用的几个接口,以及如何使用

2024-03-14 14:11:38 896 81

原创 Linux进程概念&&僵尸进程&&孤儿进程

Linux进程概念&&僵尸进程&&孤儿进程

2024-03-11 18:50:57 1678 89

原创 Linux 实现打印彩色进度条

Linux 实现打印彩色进度条详解

2024-03-04 10:36:55 1902 107

原创 C语言之操作符详解

本文介绍了算术作符、移位操作符、位操作符、赋值操作符、单目操作符、强制类型转换、关系操作符、逻辑操作符、条件操作符以及问题表达式

2024-02-29 15:19:06 1101 96

原创 C/C++内存管理学习【new】

本文讲解了C/C++内存分布形式,并且学习C++中new的操作,最后了解了内存泄漏分类,如何检测内存泄漏,如何避免内存泄漏

2024-02-24 08:54:42 2821 106

原创 【C++】初始化列表、static成员、友元、匿名对象、附练习题

我们前面学习了关于类和对象的6个默认成员函数,知道了一个空类中有构造函数和析构函数,通过对对象初始化和对象中进行资源清理,达到初始化和销毁的作用。我们再对一些小的点进行补充,看看类和对象的一些细节。

2024-02-21 19:50:06 1509 59

原创 【C++】中类的6个默认成员函数 取地址及const成员函数 && 学习运算符重载 && 【实现一个日期类】

【C++】中类的6个默认成员函数 取地址及const成员函数 && 学习运算符重载 && 【实现一个日期类】

2024-02-19 13:06:16 1467 62

原创 C++中类的6个默认成员函数 【拷贝构造函数】

C++中类的6个默认成员函数 之【拷贝构造函数】

2024-02-16 14:59:05 1849 68

原创 C++中类的6个默认成员函数【构造函数】 &&【析构函数】

C++中类的6个默认成员函数【构造函数】 &&【析构函数】

2024-02-10 17:04:05 1641 65

原创 Linux项目自动化构建工具之make/Makefile演示gcc编译

Linux项目自动化构建工具之make/Makefile演示gcc编译

2024-02-04 16:43:14 1597 76

原创 使用gcc/g++查看C语言预处理,编译,汇编,连接,以及动静态库的区分

使用gcc/g++查看预处理,编译,汇编,连接,以及动静态库的区分

2024-02-02 19:54:01 2080 56

原创 C++引用、内联函数、auto关键字介绍以及C++中无法使用NULL的原因

本文详细介绍了C++引用、内联函数、auto关键字介绍以及C++中无法使用NULL的原因

2024-02-01 20:23:18 1475 40

原创 Linux编辑器之vim的使用

一、vim简介二、vim的基本概念三、vim的基本操作四、vim正常模式命令集移动光标删除文字复制替换撤销上一次操作更改跳至指定的行vim末行模式命令集列出行号跳到文件中的某一行查找字符保存文件离开vim五、进阶vim玩法打开文件批量注释代码执行shell命令指定注释窗口命令退出命令六、简单vim配置配置文件的位置常用配置选项,用来测试

2024-01-31 10:22:14 2290 52

原创 C++类和对象引入以及类的介绍使用

本文主要内容是C++类和对象引入以及类的介绍使用,面向过程与面向对象的区别

2024-01-29 18:27:25 1282 50

原创 一篇文章带你了解C++中隐含的this指针

一篇文章带你了解C++中隐含的this指针,特性以及两道面试题

2024-01-27 17:19:09 2027 62

原创 C++的关键字,命名空间,缺省参数,函数重载以及原理

从今天开始就序列更新C++的文章了,希望大家可以耐心的坚持下去学习,有一个很好的成长~~

2024-01-25 12:25:19 1598 63

原创 C语言之反汇编查看函数栈帧的创建与销毁

配置环境反汇编查看函数栈帧的创建与销毁

2024-01-23 12:27:02 1521 52

原创 Linux配置yum源以及基本yum指令

Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。–>来自百度百科在Linux下安装软件,一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序。

2024-01-23 08:40:29 1691 35

原创 Linux与windows互相传输文件之rzsz命令

这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件。安装完毕之后可以通过拖拽的方式将文件上传过去。我这里有一个我文件,使用sz下载到本地。

2024-01-22 17:47:36 1304 32

原创 Linux中普通用户使用sudo命令提示lin is not in the sudoers file. This incident will be reported.

在使用Linux的过程中我们普通用户使用sudo可能遇到这样的提示pp is not in the sudoers file. This incident will be reported.

2024-01-21 19:54:42 878 40

原创 Linux粘滞位的理解,什么是粘滞位?

粘滞位(Stickybit),或粘着位,是Unix文件系统权限的一个旗标。最常见的用法在目录上设置粘滞位,如此以来,只有目录内文件的所有者或者root才可以删除或移动该文件。如果不为目录设置粘滞位,任何具有该目录写和执行权限的用户都可以删除和移动其中的文件。实际应用中,粘滞位一般用于/tmp目录,以防止普通用户删除或移动其他用户的文件。—>来自百度百科在共享一个文件夹里面的文件的时候,我们创建的文件不想被其他用户删除,【毕竟是共享的】,所以我们就需要用到粘滞位,粘滞位就可以很好的解决这个问题,被粘滞位。

2024-01-19 18:35:39 1274 57

原创 C语言之【函数】篇章以及例题分析

在C语言中,这个函数时必不可少的,没有函数没有灵魂,要不然代码就会乱成一团,所以我们要学函数,接下来就开始函数之旅~~如果库函数能干所有的事情,那还要程序员干什么?所以更加重要的是【自定义函数自定义函数和库函数一样,有函数名,返回值类型和函数参数。但是不一样的是这些都是我们自己来设计。这给程序员一个很大的发挥空间statement;//语句项ret_type 返回类型fun_name 函数名para1 函数参数写一个函数可以找出两个整数中的最大值。x : y);

2024-01-18 16:54:08 1855 49

原创 C语言之从浅入深一步一步全方位理解指针【附笔试题】

全方位理解C语言指针,初阶到进阶,一步一步探索~~

2024-01-14 10:24:24 2385 66

原创 C语言之扫雷小游戏的实现【含递归展开】

扫雷游戏是1992年发行的一款大众类益智游戏,对于许多80后、90后来说都是童年的回忆。如今三十年过去了,这款游戏依旧受到很多网友的喜爱,今天我们一起来模拟实现一下扫雷游戏。本文所用的编译器是VS2022。

2024-01-11 15:10:57 2005 41

原创 C语言之三子棋小游戏的应用

三子棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉棋、一条龙、井字棋等。游戏分为双方对战,双方依次在9宫格棋盘上摆放棋子,率先将自己的三个棋子走成一条线就视为胜利,而对方就算输了,但是三子棋在很多时候会出现和棋的局面。本篇博客就来进行讲解这个三子棋小游戏,跟着我来一起看把!(本文使用的编译器是VS2022。

2024-01-10 21:22:25 1579 36

原创 C语言之详解数组【附三子棋和扫雷游戏实战】

在C语言中,数组的大小在声明时需要指定,包括行和列。这是因为C语言中的数组是一块连续的内存空间,编译器在编译时需要知道数组的大小以便正确分配内存。对于一个数组的数组名来说就是这个数组的首元素地址,我们可以根据一个数组的首元素地址来访问到这个数组,然后就可以访问到这个数组中的所有内容。如果省略列,编译器将无法确定每个元素在内存中的偏移量,因此无法正确计算数组的地址。内的数字便是这个数组的大小,表示这个数组中可以存放多少元素。在数组创建的时候不能使用变量,而在使用的时候就可以~~数组是一组相同类型元素的集合。

2024-01-07 17:36:42 1900 75

空空如也

空空如也

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

TA关注的人

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