自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 7、文件属性

一、linux中各种文件类型1、普通文件(- regular file)(1)文本文件。文件中的内容是由文本构成的,文本指的是ASCII码字符。文件里的内容本质上都是数字(不管什么文件内容本质上都是数字,因为计算机中本身就只有1和0),而文本文件中的数字本身应该被理解为这个数字对应的ASCII码。常见的.c文件, .h文件 .txt文件等都是文本文件。文本文件的好处就是可以被人轻松读懂和编写。所以说文本文件天生就是为人类发明的。(2)二进制文件。二进制文件中存储的本质上也是数字,只不过这些数字并不

2020-08-31 09:48:55 1188

原创 6、文件IO

一、什么是文件IOIO就是input/output,输入/输出。文件IO的意思就是读写文件。二、文件操作的主要接口APIopen、close、write、read、lseek(1)API是一些函数,这些函数是由linux系统提供支持的,由应用层程序来使用。(2)应用层程序通过调用API来调用操作系统中的各种功能,来干活。1、文件操作的一般步骤在linux系统中要操作一个文件,一般是先open打开一个文件,得到一个文件描述符,然后对文件进行读写操作(或其他操作),最后close关闭文件。

2020-08-27 20:05:26 1211

原创 22、智能指针

此文编写参考狄泰软件学院唐佐林老师的视频课程,如有错误之处,欢迎指正。一、为什么需要智能指针指针非常好用,可以直接操作内存,方便,效率高,同样它也是一把双刃剑,它也带来许多问题,其中之一就是内存泄漏。内存泄漏主要是由于动态申请堆空间,用完后不归还,且c++中没有垃圾回收机制和指针无法控制所指堆空间的生命周期。那么有没有好的方案尽力地去避开内存泄漏呢?那就是使用智能指针,所谓智能指针就是用对象来模拟指针的行为,能下面我们一起来探讨这个相关问题。1、传统指针的缺陷#include<iostream

2020-08-21 10:59:15 105

原创 21、数组类模板

此文编写参考狄泰软件学院唐佐林老师的视频课程,如有错误之处,欢迎指正。一、预备知识1、模板参数可以是数值型参数(非类型参数)template<typename T,int N>void func(){ T a[N];//使用模板参数定义局部数组}func<double,10>();2、数值型模板参数的限制变量不能作为模板参数浮点数不能作为模板参数类对象不能作为模板参数。。。。。。本质:模板参数是在编译阶段被处理的单元,因此,在编译阶段必须准确无误

2020-08-20 22:19:58 617

原创 20、二阶构造模式

此文编写参考狄泰软件学院唐佐林老师的视频课程,如有错误之处,欢迎指正。一、为什么要引入二阶构造模式?1、构造函数的缺点(1)只提供自动初始化成员变量的机会(2)不能保证初始化逻辑成功(3)执行return语句后构造函数立即结束由此可知,构造函数可能会构造出一个半成品对象,那么什么是半成品对象呢?—初始化操作不能够按照预期完成而得到的对象—半成品对象是合法的c++对象,也是bug的重要来源2、所以为了解决半成品对象所带来的危害,就引入了二阶构造模式。二、如何进行二阶构造所谓二阶构造也就是

2020-08-20 21:34:24 363

原创 19、类模板

此文编写参考狄泰软件学院唐佐林老师的视频课程,如有错误之处,欢迎指正。一、什么是类模板1、为什么需要类模板?一些类主要用于存储和组织数据元素类中数据组织的方式和数据元素的具体类型无关如:数组类,链表类,Stack类,Queue类,等。意义:c++中将模板的思想应用于类,使得类的实现不关注数据元素的具体类型,而只需要关注类所需要实现的功能。2、c++中的类模板以相同的方式处理不同的类型在类声明前使用template进行标识<typename T>用于说明类中使用的泛指

2020-08-19 22:17:31 340

原创 18、对象的构造

一、构造函数的由来1、对象成员初始值问题从程序设计的角度来看,对象本质上就是一个变量,因此有如下结论:----在栈上创建对象时,成员变量的初始值为随机值----在堆空间上创建对象时,成员变量的初始值为随机值----在静态存储区创建对象时,成员变量的初始值为0,既全局变量和用static声明过的变量。#include<iostream>using namespace std;class Test{private: int i; int j;public:

2020-08-19 09:45:25 242

原创 17、函数模板

一、函数模板的概念和意义1、为什么需要函数模板?函数模板是泛型编程中的一种技术,在探讨函数模板之前,我们先了解我们为什么要学习函数模板?c++中有几种交换变量的方法,我们至少清楚存在两种,一种是通过宏定义来实现,一种是通过函数的方式来实现,下面我们就通过实例来了解这两种方式。例程:#include<iostream>#include<string>using namespace std;#define SWAP(t,a,b) \do \{

2020-08-18 20:17:25 240

原创 14、关于类型转换

一、类型转换纲要1、基本类型的转换----隐式转换(危险性)和显式转换(4种匹配)int a=-2000;unsigned int b=1000;a+b>0;static_castreinterpret_castdynamic_castconst_cast2、基本类型与类类型,类类型和类类型之间的转换----通过转换构造函数(如何杜绝隐式转换问题)实现基本类型到类类型之间的转换----通过类型转换函数实现类类型到基本类型之间的转换----工程实践中通过Type toType(

2020-08-17 11:47:02 274

原创 16、关于对const的讨论

一、经过const修饰后,什么时候为只读变量,什么时候为常量?1、const在从c语言中的特性其中有一点在c++中是不成立的,也就是在c++中可以通过const定义真正意义的常量。2、const常量的判别标准(1)只有字面量初始化的const常量才能进入符号表中(2)使用其他变量初始化的const常量本质上是只读变量(3)被volatile修饰的const常量不会进入符号表中下面通过例程来分析。#include<iostream>using namespace std;in

2020-08-13 09:00:24 178

原创 15、类的静态成员函数

文编写参考狄泰软件学院唐佐林老师的视频课程,如有错误之处,欢迎指正。一、为什么需要静态成员?静态成员实质上是为了解决数据共享的问题,因为使用全局变量会带来不安全性。二、静态成员变量1. 成员变量知识回顾(1)通过对象名能够访问public成员变量(2)每个对象的成员变量都是专属的(3)成员变量不能够在对象之间共享注意:成员变量是每个对象所专属的成员,而成员函数是多个对象所共用的,当有多个对象时,是通过this指针来去实现确定当前对象的。当我们想要实现多有对象都共享一个成员变量时,那么该如

2020-08-12 22:52:16 700

原创 13、关于虚函数

文编写参考狄泰软件学院唐佐林老师的视频课程,如有错误之处,欢迎指正。一、构造函数是否可以成为虚函数?析构函数是否可以成为虚函数?我们都知道可以将成员函数声明为虚函数,那么构造函数和析构函数也是成员函数,那么是否可以将他们声明成虚函数呢?对于构造函数而言构造函数是不可能成为虚函数的,因为在构造函数执行完后,虚函数表指针才能够被正确的初始化,因此声明成虚函数,编译器不能通过。对于析构函数而言析构函数是可以成为虚函数的,并且在建议在设计类的时候将析构函数声明为虚函数,那么将析构函数声明成为虚函数的意

2020-08-12 16:04:47 177

原创 12、关于动态内存分配

文编写参考狄泰软件学院唐佐林老师的视频课程,如有错误之处,欢迎指正。一、c++中内存申请于c语言内存申请的异同1、对于new关键字和malloc函数new关键字的功能类似于c语言中的malloc,它们都是从堆空间中申请一段内存。下面几点是两者之间的异同点:new是c++中的关键字,而malloc是c库提供的函数,有些c编译器可能是没有这个库的,那么就会导致不能申请动态空间new是以具体类型为单位进行内存分配,而malloc是以字节为单位进行内存分配。new在申请单个类型变量时可以进行初始化,而

2020-08-12 11:22:32 213

原创 11、c++中的多重继承

一、对多重继承的初步认识1、概念c++中支持编写多重继承的代码一个子类可以拥有多个父类子类拥有父类的所有成员变量子类继承所有父类的成员函数子类对象可以当作任意父类对象使用2、语法规则class Derived:public BaseA,public BaseB,public BaseC{ .........};其实这跟单重继承是很类似的二、多重继承引发的问题问题1通过多重继承得到的对象可能拥有“不同的地址”。下面通过一个实例来理解。...

2020-08-12 08:37:33 354

原创 9、c++对象模型分析

此文编写参考狄泰软件学院唐佐林老师的视频课程,如有错误之处,欢迎指正。一、回归本质1、关于对成员变量的探索class是一种特殊的struct在内存中class依旧可以看成是变量的集合class与struct遵循相同的内存对齐规则class中的成员变量和成员函数是分开存放的(1)每个对象都有独立的成员变量,这个变量可能存在于栈、堆或者全局数据区(2)多有对象共享类中的成员函数,该成员函数只可能存在于代码段下面通过一个实例来理解上述内容#include<iostream>#

2020-08-11 11:57:41 170

原创 4、void和void指针分析

一、void 指针存储任意类型指针的基础指针是一个特殊的变量,它的特殊之处在于这个变量存放的内容为地址,无论是int型指针、float型指针等等所有的指针类型,只要在同一个系统下,系统都为它分配了同样内存大小的空间(如32位机子中任何一个指针的长度都是4个字节,因为逻辑地址就占用4字节),这也为使用void指针可以存储任意类型的指针打下了基础。二、void的定义void体现了一种抽象,这个世界上的变量都是“有类型”的,void的出现只是为了一种抽象的需要,void的字面意思是“无类型”,void *则

2020-08-11 08:05:29 240

原创 10、c++中的抽象类和接口

此文编写参考狄泰软件学院唐佐林老师的视频课程,如有错误之处,欢迎指正。一、什么是抽象类1、引入:在进行面向对象分析时,会发现一些抽象的概念,如图形的面积怎么算?但是图形有很多种图形,如圆形、矩形、三角形等等,所以在现实生活中我们要知道具体的图形类型才能够进一步的去计算面积,因此对概念上的“图形”求面积是没有意义的,因此“图形”只是一个概念上的类型,没有具体的对象,但是为了描绘生活问题,这个概念上的类型又是必须存在的,那么如何解决这种问题?因此也就引入了抽象类。“图形”是现实生活中各种图形的抽象概念,因

2020-08-09 16:35:30 263

原创 3、函数指针

此文编写参考狄泰软件学院唐佐林老师的视频课程,如有错误之处,欢迎指正。1、函数指针的定义函数也有其自己的类型,函数的类型由函数的返回值类型和函数的形参列表所构成,用函数类型定义的指针称为函数指针,函数指针用于指向某个函数,而函数名是执行函数体的入口地址。2、定义一个函数指针的方法:(1)、直接用函数类型去定义函数指针(可先为函数类型重命名)如typedef type (pointer)(形参列表),则此时pointer就是一个函数类型,则可以用这个函数类型去定义一个函数指针了。如pointer* n

2020-08-09 10:54:47 176

原创 2、用typedef为类型重命名

1、目的:(1)、为了简化名字,方便阅读,尤其是指针的阅读(2)、有利于程序的通用和移植,如在不同计算机系统中int型所占字节数不一样,如在一个系统中int是两个字节,但是到了另外一个系统是4个字节,但是我们只需要typedef int integer,则修改int为long就可以了。2、方法:(1)、按照定义变量的方法写出定义体(2)、将变量名换成新类型名(3)、在最前面加typedef(4)、用新类型名去定义变量名如:int a=》int Count=>typedef int C

2020-08-09 10:33:55 593

原创 1、#pragma的使用

此文编写参考狄泰软件学院唐佐林老师的视频课程,如有错误之处,欢迎指正。一、初认识#pragma用于指示编译器完成一些特定的动作#pragma所定义的很多指示字是编译器所特有的#pragma在不同的编译器间是不可移植的注意:预处理器将忽略它不认识的#pragma指令不同的编译器可能以不同的方式解释同一条#pragma指令二、用法#pragma parameter不同的parameter参数语法和意义各不相同1、#pragma messagemessage参数在大多数的编译器中都有相

2020-08-07 13:07:16 265

原创 8、多态的概念和意义

一、什么是多态?1、多态初认识多态也就是面向对象中期望的行为。(1) 根据实际的对象类型判断如何调用重写函数(2) 父类指针(引用)指向父类对象则调用父类中调用的函数子类对象则调用子类中定义的重写函数总的来说就是根据实际的对象类型决定函数调用的具体目标,同样的调用语句在实际运行时有多种不同的表现形态。2、语法通过关键字virtual来对函数进行声明(1)被virtual声明的函数被重写后具有多态特性(2)被virtual声明的函数叫虚函数(3)要在父类中对函数进行声明下面通过一个实

2020-08-05 19:00:02 608 2

原创 7、同名覆盖引发的问题

一、父子间的赋值兼容子类对象可以直接赋值给父类对象子类对象可以直接初始化父类对象父类指针可以直接指向子类对象父类引用可以直接引用子类对象

2020-08-05 10:34:30 172

原创 6、父子间的冲突

一、子类与父类的同名成员问题1、是否可以同名下面我们通过一个实例来说明。#include<iostream>#include<string>using namespace std;class Parent{public: int mi;};class Child :public Parent{public: int mi;};int main(){ Child c1; c1.mi=100;//mi到底是子类自己定义的mi还是从父类那里继承而来的呢

2020-08-04 15:58:46 189

原创 5、继承中的构造与析构

这一节主要解决这样的一个问题:如何初始化父类成员?父类构造函数和子类构造函数有什么关系?一、子类对象的构造1、子类构造函数必须对继承而来的成员进行初始化:-----直接调用初始化列表或者赋值的方式进行-----调用父类构造函数进行初始化,调用方式如下:(1)默认调用适用于无参构造函数或者是使用默认参数的构造函数(2)显式调用通过初始化列表进行调用适用于所有父类构造函数例程:#include<iostream>#include<string>using na

2020-08-03 23:32:33 416

原创 4、不同的继承方式

此文编写参考狄泰软件学院唐佐林老师的视频课程,如有错误之处,欢迎指正。一、三种不同的继承方式1、c++中支持三种不同的继承方式public,父类成员在子类中保持原有的访问级别private,父类成员在子类中变为私有成员protected,父类中的公有成员变成保护成员,其他成员保持不变。c++中的默认继承方式为private例程如下:#include <iostream>#include <string>using namespace std;clas

2020-08-03 11:05:32 174

原创 2、继承中的访问级别

此文编写参考狄泰软件学院唐佐林老师的视频课程一、子类可以直接访问父类的私有成员吗?1、对于这个问题的两个不同的视角(1)、根据面向对象的理论,因为子类拥有父类的一切行为何属性,因此应该可以直接访问父类的私有成员。(2)、根据c++语法本身,因为外界不能够直接访问类的private成员,因此子类不可以访问父类的私有成员。那么实际情况是怎样的呢?下面通过实验便知。#include<iostream>using namespace std;class Parent {private

2020-08-03 09:22:13 139

原创 3、字符串类

此文编写参考狄泰软件学院唐佐林老师的视频课程字符串操作详解可参考该链接一、历史遗留问题我们都知道c语言是通过字符数组来去模拟字符串的,也就是说c语言是不支持真正意义上的字符串的,还有很重要的一点是c语言不支持自定义类型,因此它也无法获得字符串类型,但是到了c++这里,这个状况就可以被改变了,在c++中,我们可以定义很多的类。所以在c++中,我们可以通过类完成字符串类型的定义。需要注意的是:c++语言直接支持c语言的所有概念,c++语言中没有原生的字符串类型,c++标准库提供了string类型。下面是s

2020-08-02 22:44:17 189

原创 1、继承的概念和意义

此文编写参考狄泰软件学院唐佐林老师的视频课程一、继承在生活中的意义:有句话叫做龙生龙,凤生凤,老鼠的儿子会打洞,龙生的儿子自热长的像龙,这是长相相似,当然做不到完全一样,也可说特征相似,老鼠的儿子会打洞,打洞这是一种行为,老鼠的儿子就是继承了老鼠爸爸的打洞行为,所以说继承在生活中可以看成是特征的获取和行为的获取。二、类与类之间有哪些关系?在讲继承之前先讲一下类与类之间有哪些关系?组合关系和继承关系,接下来将先讲组合关系,因为继承关系比组合关系要复杂,能用组合关系描述实际问题时就用组合关系来解决,尽量

2020-08-01 12:51:15 1147

原创 5、工具使用

一、串口调试工具1、PuTTY2、MobaXterm这个软件很强大,这里先介绍其中的串口工具。小结:PuTTY中可以任意输入你想要的波特率,但是MobaXterm中只能选择默认提供的波特率。二、 SSH远程登录这里还是用MobaXterm软件。作用:在Windows下操作方便一点。三、ftp传输(文件互传)作用:方便两个系统中文件的互传...

2020-08-01 07:59:59 1123

空空如也

空空如也

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

TA关注的人

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