自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++ 虚构造、虚析构、纯虚函数、抽象类、类型信息运算符、文件读写

C++ 虚构造、虚析构、纯虚函数、抽象类、类型信息运算符、文件读写虚构造与虚析构纯虚函数和抽象类类型信息运算符文件读写虚构造与虚析构构造函数能否是虚函数为什么? 构造函数不能定义为虚函数。 对象的构造过程: 1、分配内存 2、执行父类的构造 3、执行成员构造 4、执行子类构造 如果构造函数是虚函数则可能会被子类覆盖,当构造子类对象时,会先调用父类构造。 两种猜想: 1、由于它实际是子

2021-10-07 04:06:46 235 1

原创 类的继承、虚函数、多态

类的继承、虚函数、多态类的继承什么是继承继承的语法继承的特点多重继承、钻石继承、虚继承虚函数、覆盖多态类的继承什么是继承1、当遇到问题时,先考虑现在的类是否能解决一部分问题,如果可以则继承现有的类,然后再此基础上进行扩展,达到解决问题的目的,同时缩短解决问题的时间(代码复用)。2、当遇到一些复杂问题时,可以先把问题进行分解成若干个小问题,然后为每个小8问题设计一个解决问题的类,最终通过继承把这些类汇总到一个类中,达到解决问题的目的,以此降低解决问题的难度,同时也可以让多个程序员协作解决问题。继

2021-10-07 03:52:59 150

原创 C++ 运算符重载、智能指针

C++ 运算符重载运算符函数运算符格式双目运算符重载输入、输出运算符重载自变运算符重载特殊运算符的重载运算符重载的限制智能指针运算符函数在C++中会把运算符当作函数处理,一个表达式其实是调用了运算符函数完成计算的,这种特性对内建的数据类型没什么用,但对自建的数据类型却可以提高它们的个性化,从而提高代码的易用性和可读性,如: string str; str += "hehe"; str == "xixi";运算符格式运算符格式:单目运算符:#0、0#会被编译器翻译成如下形式

2021-10-07 03:27:21 251

原创 C++ c语言的const和c++的const/结构对象内存的区别、拷贝构造、赋值函数、静态成员、单例模式、mutable、 explicit关键字

C++ c语言的const和c++的const/结构对象内存的区别、拷贝构造、赋值函数、静态成员、单例模式、mutable、 explicit关键字C语言中的const与C++中的区别?没有成员的的结构对象,在C语言和C++中分别占多少个字节内存,为什么?拷贝构造函数调用拷贝构造函数的情况拷贝构造的任务需要手动实现拷贝构造函数的情况什么深拷贝与浅拷贝?赋值函数调用赋值函数的场景赋值函数的任务什么时候需要手动实现赋值函数mutable关键字explicit关键字静态成员普通成员什么是静态成员静态成员特点静态成

2021-09-26 19:18:00 154

原创 C++ 初始化列表、对象创建/销毁过程、this指针

C++ 初始化列表、对象创建/销毁过程、this指针初始化列表对象的创建和销毁过程this指针初始化列表初始化列表是构造函数的一种特殊语法,只能在构造函数中使用,它的主要用处是给类的成员变量进行初始化。class 类名{ 成员变量;public: 类名(形参列表):成员变量名(初始化数据) , ... { }}1、可以区别同名的参数和成员变量,使用同名参数给成员变量初始化。2、是唯一正常初始化const属性成员变量的方法。3、可以调用成员类、父类的有参构

2021-09-26 09:29:55 256

原创 c++ 函数重载、内联函数、引用、类与对象、构造/析构函数

c++ 函数重载、内联函数、引用、类与对象、构造/析构函数函数重载什么是函数重载C++是如何实现函数重载的参数的类型转换重载和隐藏extern "C"指针的const属性会影响函数重载默认形参什么是默认形参默认形参的约束内联函数普通函数与内联函数内联函数的优缺点什么情况适合内联内联函数与宏函数的相同点与不同点显式内联和隐式内联引用什么是引用引用有哪些用处使用引用有哪些约束相比指针有哪些优点强制类型转换操作符别名面向对象和面向过程类和对象构造函数和析构函数函数重载什么是函数重载 同一作用域、函数名

2021-09-24 11:58:05 168

原创 c++简介、c++与c的一些区别、命名空间、堆内存空间管理

c++简介、c++与c的一些区别、命名空间、堆内存空间管理C++介绍第一个C++程序C++的堆内存管理C++与C的区别c到c++C++和C数据类型的不同C语言中的malloc/free与C++中的new和delete的相同点和不同点。命名空间C++介绍本贾尼.斯特劳斯特鲁普,于1979年贝尔实验室,在分析UNIX系统的流量时特别希望有一个模块化的工具,于是在C语言的基础上开发一种新的编程语言,就是C++。第一个C++程序#include <iostream>using namespa

2021-09-24 09:43:01 408

原创 生产者与消费者模型、线程与socket编程

生产者与消费者模型、线程与socket编程生产者与消费者模型线程与socket编程生产者与消费者模型生产者:生产数据的线程 消费者:使用、处理数据的线程缓冲区:隔离生产者和消费者,这样可以避免互相等待,提高运行效率。生产者快于消费者:缓冲区爆满 撑死消费者快于生产者:缓冲区一直空 饿死使用条件变量可以解决生产者与消费之间的效率不匹配问题。生产者快于消费者,通知消费者加速消费,生产者睡眠降低生产速度。消费者快于生产者,通知生产者加速生产,消费者睡眠降低消费速度。线程与socket编程

2021-09-13 19:42:22 430

原创 线程、线程同步、死锁

线程线程管理线程介绍线程和进程的区别(重要):POSIX线程线程函数主线程与子线程传参线程的结束线程的取消操作线程分离线程同步互斥量条件变量死锁问题死锁的定义产生死锁的四大必要条件防止产生死锁方法死锁的检测线程管理线程介绍 线程就是进程中负责执行的部分,是进程内部的控制序列,它是轻量级的,没有自己独立的代码段(txt)、数据段(静态数据bss、全局数据段data)、堆区(heap)、环境变量、命令行参数、文件描述符、信号处理函数、当前工作目录。 线程拥有独立的栈内存,也就是它自己独立的局

2021-09-13 19:39:30 61

原创 select、epoll、poll、pselect编程

多路复用多路复用select编程pselect编程poll编程epoll编程多路复用使用一个进程(且只有主线程)同监控若干个文件描述符的读写,这种读写模式叫多路复用。多用于TCP的服务端,用于监控客户端的连接和数据的收发 优点:不需要频繁的创建进程、销毁进程,从而节约了内存资源、时间资源,也避免的进程之间的竞争、等待。 缺点:单个客户端的任务不能太耗时,否则其它客户端就会感知到。 适合并发量高,但任务短小的情况,如:Web服务器。select编程fd_set 是文件描述符

2021-09-13 19:33:06 105

原创 网络编程 tcp、udp、windows编程

网络编程 tcp、udp、windows编程防火墙的开关网络通信TCP网络通信UDP网络通信Windows下的网络编程防火墙的开关sudo ufw status 命令查看当前防火墙状态sudo ufw enable 命令来开启防火墙sudo ufw disable 命令来关闭防火墙网络通信所谓网络通信,就是底层遵循TCP/IP协议,而在系统层以Socket接口方式呈现。TCP网络通信基于TCP协议的网络通信模型:服务端 客户端创建soc

2021-09-13 19:28:34 77

原创 Linux 环境编程 day06 管道通信、XSI进程间通信、消息队列、共享内存、信号量、本地套接字

Linux 环境编程 day06 管道通信、XSI进程间通信、消息队列、共享内存、信号量、本地套接字一、基本概念1、什么是进程间通信进程间通信(Interprocess communication 也叫IPC):指两个或多个进程之间数据交互的过程。为什么进程之间需要通信:进程之间是相互独立的,当它们合作完成一些任务时就需要交互数据。2、进程间通信的分类1、简单的进程间通信命令行参数、环境变量、信号、文件2、传统的进程间通信:管道3、XSI进程间通信:共享内存、消息队列、信号量4、基于so

2021-09-07 19:48:18 116

原创 Linux环境编程 day05 进程

Linux环境编程 day05 进程一、基本概念1、进程与程序程序:就是存储在磁盘上的文件,里面包含了一些可以执行的二进制指令和数据。进程:就是运行着的程序(处于活动状态的程序)。2、查看进程1、简单形式:ps 以简略形式显示当前用户控制的终端下的进程。2、以列表形式显示进程的详细信息:ps aux-a 所以用户控制的终端进程-u 以详细形式显示-x 包括无终端控制的进程3、进程详细信息表USER:进程属主PID:进程ID%CPU:CPU占用率%MEM:内存使用率VSZ:占用

2021-09-07 16:45:23 172

原创 Linux环境编程 day04 中断、信号、计时器

Linux环境编程 day04 中断、信号、计时器一、基本概念1、中断暂停当前执行的任务,转而执行其它任务,待完成后再返回继续执行当前任务。硬件中断:来自硬件设备的中断软件中断:来自其它程序的中断2、信号是一种软件中断,信号提供一种异步执行任务的机制。3、常见的信号SIGSEGV(11) 段错误信号 试图访问未映射过虚拟内存,或向没有写权限的内存写入数据 终止+coreSIGINT(2) 终端中断符信号 用户按中断键(Ctrl+C),产生此信号,并送至前台进程组的所有进程 终止 SIG

2021-09-07 10:50:18 158

原创 Linux环境编程 day03 文件同步、修改权限、大小、软硬链接、目录

Linux环境编程 day03 文件操作续一、dup和dup2int dup(int oldfd);功能:复制文件描述符oldfd:已经打开了的文件描述符返回值:系统随机返回一个新的文件描述述newfd,但与oldfd代表同一个内核对象。当对oldfd和newfd进行读写时,访问的是同一个文件。int dup2(int oldfd, int newfd);功能:按指定的newfd复制文件描述符如果newfd已经被占用,则把它关闭重新复制。在记录软件的日志经常使用(非常好用),能解决复杂的

2021-09-07 10:23:27 105

原创 Linux环境编程 day02 内存管理、进程映像、虚拟内存、管理内存的API、系统调用、文件操作

Linux环境编程 day02 内存管理、进程映像、虚拟内存、管理内存的API、系统调用、文件操作内存管理的层次划分进程映像虚拟内存虚拟内存机制有哪些优点?管理内存的API遵循POSIX标准的内存管理Linux系统的内存管理系统调用一切皆文件文件描述符(在很多函数中作为形参时名字是fd)文件的打开、关闭、创建文件读写系统IO与标准IO文件位置指针文件黑洞内存管理的层次划分STL 智能指针,可以自动分配/释放内存资源 调用C++C++ new/delete运算符,构造/析构函数 调

2021-09-06 20:48:44 139

原创 Linux 环境编程 day01 Linux系统介绍、GNU编译工具、静态/共享库、环境变量表

@toc[ ]

2021-09-06 18:57:04 93

原创 个人学习数据结构的小总结

数据结构总结什么是数据结构数据结构相关术语数据的逻辑结构数据的物理结构/存储结构顺序表:元素存储在一整块连接的内存中,根据前后位置来确定逻辑关系。链表特点功能受限的表结构栈队列什么是数据结构不是研究数据的计算的学科,而是研究数据之间关系的学科数据结构相关术语数据:大自然中的数字、符号图像、音频、视频都被看作数数据段:某个事物其中的一个数据(类似结构的成员)元素:某个事物的一个完整数据(类似结构体变量)数据结构:由元素+元素关系而组成后的一个整体,叫数据结构(如栈、队列)算法:数据结构所具备的

2021-08-30 14:06:09 495

原创 c语言从0开始_17文件操作

c语言从0开始_17文件操作文件的分类文件IO二进制方式读写文本方式读写随机读写其他相关函数文件的分类文本文件: 存储的是ASCII码的二进制(人能看懂的文件),可以被直接打开,检查数据是否正确,但读写都需要进行数据转换。 '2''5''5'二进制文件: 存储的是数据的补码,无法用文件本文件直接打开,好处是读取文件中就可以直接使用。 1111 1111 ->255 在以一定权限打开了文件后,在根据文件的分类进行操作文件IO在stdio里面FILE *fopen

2021-07-19 09:34:25 94

原创 c语言从0开始_16结构、联合、枚举类型

c语言从0开始_16结构、联合、枚举类型结构:struct设计定义结构变量:访问成员:使用堆内存存储结构变量typedef 重定义结构类型联合:union枚举:enum结构:struct结构是一种由程序员自己设计的数据类型,用于描述一个事物的各项数据的,由若干个不同的基础数据类型组成设计 一般结构体设计在头文件,或函数外,方便其它文件、其它函数使用struct 结构体名{ 类型 成员名; ...};定义结构变量: struct 结构体名 结构体变量名; 注

2021-07-19 09:30:20 194

原创 c语言从0开始_15 多文件编程以及头文件

c语言从0开始_15 多文件编程以及头文件多文件编程头文件头文件中应该写什么头文件的编写规则多文件编译Makefile编译脚本多文件编程当程序的业务逻辑越来越复杂,代码量越来越多,所有代码写在一个源文件中会影响代码编写、阅读、团队合作,因此为了避免这些问题,可以按功能把代码编写到不同的源文件中,然后给每个源文件编写一个辅助说明的头文件。头文件头文件中应该写什么面临的问题:头文件可能被任何源文件包含,意味着头文件中的内容会在多个目标文件中存在,合并不能冲突重点:头文件中只能编写声明语句,不能有定

2021-07-17 16:33:12 166

原创 c语言从0开始_14预处理

c语言从0开始_14预处理预处理指令查看预处理的结果预处理指令的分类#include 文件包含#define 定义宏宏常量宏函数宏的二义性条件编译代码注释判断、调试其它预处理指令预处理指令程序员所编写的代码并不能被真正的编译器编译,需要一段程序翻译一下翻译的过程叫做预处理,被翻译的代码叫做预处理指令,以#开头的都是预处理指令查看预处理的结果 gcc -E code.c 把预处理的结果显示到屏幕上 gcc -E code.c -o code.i 把预处理的结果存储到code.i文

2021-07-17 16:28:35 92

原创 c语言从0开始_13缓冲区

c语言从0开始_13缓冲区

2021-07-16 14:59:31 59

原创 c语言从0开始_12 字符&字符串

c语言从0开始_12 字符&字符串字符字符相关的函数串型结构字符串字符串字面值字符数组字符串的输入字符串的输出字符串的常用操作字符字符就是符号或图案,在计算机中字符是以整数形式存储的,当需要显示时会根据ASCII码中对应关系显示吹相应的符号或图案一般记住下面这四个就行‘\0’ 0‘0’ 48‘A’ 65‘a’ 97输出:printf("%c",ch);注意:一个中文字符3个字节,在Linux。字符相关的函数int isalnum( int ch

2021-07-16 14:54:16 605

原创 c语言从0开始_11堆内存管理

c语言从0开始_11申请堆内存堆内存什么是堆内存为什么要使用堆内存如何使用堆内存malloc的内存管理机制使用堆内存要注意的问题内存泄漏内存碎片堆内存定义二维数组堆内存什么是堆内存是进程中的一个内存段(text\data\bss\heap\stack),是由程序员手动管理特点:足够大,缺点:使用麻烦为什么要使用堆内存1、随着程序的复杂而数据变多2、其他的内存段申请和释放不受控制,堆内存的申请释放受控制如何使用堆内存注意:C语言中没有控制堆内存的语句,只能使用C标准库中的函数#includ

2021-07-16 14:26:11 89

原创 c语言从0开始_10 指针

c语言从0开始_10 指针指针指针定义为什么要使用指针什么情况使用指针如何使用指针定义指针变量指针变量的解引用使用指针需要注意的问题空指针野指针指针的运算const与指针数组指针与指针数组指针数组数组指针指针与数组名的关系数组名与普通指针的区别二级指针函数指针void指针指针指针定义指针是一种特殊的数据类型,使用指针可以定义指针变量,指针变量中存储的是整形数据,这种整数代表了内存的编号, 每个整数对应一个字节,使用指针变量可以访问对应的内存,具体访问的多个字节由指针的类型决定。为什么要使用指针1、

2021-07-15 13:28:30 173

原创 c语言从0开始_9 getch()获取方向键

@#toc

2021-07-15 13:04:56 497

原创 c语言从0开始_8 变量 进程映像 类型限定符

c语言从0开始_8 变量 进程映像 类型限定符进程映像text 代码段data 数据段bss 静态数据段heap 堆stack 栈变量全局变量静态全局变量局部变量静态局部变量块变量注意类型限定符autoconstexternstaticregistervolatiletypedef进程映像程序:储存在磁盘中的可执行的文件(二进制文件、脚本文件)进程:在系统中运行的程序进程映像:进程的内存的分布情况text 代码段存储的是二进制的指令、常量数据,权限是只读的,如果强行修改会产生段错误data

2021-07-14 10:24:29 83

原创 c语言从0开始_7 函数

c语言从0开始_7 函数函数函数的分类标准库函数系统函数第三方库函数自定义函数函数声明隐式声明函数定义函数调用函数传参设计函数的准则递归函数是一段具有某项功能的代码,是C语言中管理代码的最小单位,是一个代码模块,命名空间、栈空间是独立的。把代码封装成一个个的函数,可以方便管理和调用代码函数的分类标准库函数C语言标准委员会为C语言以函数形式提供一些基础的功能,被封装在libc.so库,默认添加的,所以使用时需要包含头文件,以函数名(参数) 来调用函数int isalnum(int c);int

2021-07-14 10:01:48 83

原创 c语言从0开始_6 进制转换、原反补码、位运算

c语言从0开始_6 进制转换、原反补码、位运算进制转换为什么使用二进制、八进制、十六进制?十进制转二进制二进制转十进制二进制转八进制二进制转十六进制原码、反码、补码原码反码补码补码转数据位运算进制转换为什么使用二进制、八进制、十六进制?由于现在的CPU只能识别高低两种电平,只能使用二进制数据进行计算二进制虽然能够被计算机直接计算,但是不方便书写、记录,因此将数据以八进制方式为了更方便记录在文件中随着CPU位数不断增加,八进制不能满足需求,所以发展出了十六进制来表示数据,由于历史原因八进制还不能退

2021-07-14 09:45:55 747

原创 c语言从0开始_5 数组

c语言从0开始_5 数组数组一维数组二维数组变长数组数组越界数组越界的后果:数组什么是数组:变量的组合,是一种批量定义变量的方式一维数组使用:数组名[下标];把变量排成一排,通过下标访问,下标的范围:0~数量-1遍历:与for循环配合使用,使用循环变量i作为数组的下标初始化语法:类型 数组名[长度] = {v1,v2,v3,…};1、数组与普通变量一样默认值是随机的,为了安全要对数组进行初始化2、这种初始化语法只能在定义语句时使用,而且只能逐个赋值,不能整体赋值3、初始化数据过多,编译

2021-07-14 09:17:49 87

原创 c语言从0开始_4 流程控制 for、while、switch、if-else......

流程控制 for、while、switch、if-else......流程控制分支开关循环for循环while循环do while循环循环嵌套跳转:breakcontinuegoto流程控制注意:if、for、while 的小括号后不能带分号。分支 if(//表达式1) { //表达式2....... } else if(//表达式3) { //表达式4 } else { //表达式5...... } 表达式1结果为真(非0),就执行表达式2,不然看表达式

2021-07-14 09:10:43 103

原创 c语言从0开始_3 运算符&类型转换

c语言从0开始_3 运算符&类型转换运算符算术运算符关系运算符逻辑运算符赋值运算符三目运算符位运算符字节运算符类型转换转换规则运算符算术运算符 + - * / % / % 除数不能为零,否则会产生浮点数例关系运算符 > < >= <= == != 运算规则与数学中的不同 常量 == 变量 逻辑运算符&& || !短路特性:表达式A&&表达式B,A是0则B直接不执行跳过。表达式A||表达式B,A

2021-07-13 12:59:25 146

原创 c语言从0开始_2 c文件类型、存储空间单位、常用数据类型、输入输出、32关键字、变量和常量

c语言从0开始_2 c文件类型、存储空间单位、常用数据类型、输入输出c文件类型C文件类型:.c 源文件.h 头文件.gch 头文件的编译结果.i 预处理文件.s 汇编文件.o 目标文件.a 静态库文件.so 共享库文件(动态库)C语言代码变成可执行程序的过程: 预处理: 把源文件翻译成预处理文件 gcc -E code.c 把源文件预处理后的结果显示屏幕上 gcc -E code.c -o code.i

2021-07-13 10:16:03 249

原创 c语言从0开始_1 c语言简介以及第一个程序的解析

c语言从0开始_1c语言简介以及第一个程序的解析C语言简介:C语言的第一个程序main函数:C语言简介:C语言诞生于1970~1973年,丹尼斯.里奇和肯.汤普逊编写完成的,归属于美国的贝尔实验室C语言专门为了编写操作系统而诞生的,因此天生适合对硬件编程,也非常适合数据结构和算法的实现,以速度快而著称由于C语言出现时间早,有很多缺陷,也没想到普通人也能用C语言,因此虽然存在陷阱,但是一些前辈帮你总结好了经验<C语言的陷阱与缺陷>虽然C语言自由度很高,但是也意味着危险,自由源于自律C8

2021-07-13 00:20:10 87

原创 c语言从0开始_0Linux_vim_gcc常用指令。开发环境

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-07-13 00:13:11 198 1

空空如也

空空如也

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

TA关注的人

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