自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 资源 (14)
  • 收藏
  • 关注

转载 MII与RMII接口的区别

1.概述MII即“媒体独立接口”,也叫“独立于介质的接口”。它是IEEE-802.3定义的以太网行业标准。它包括一个数据接口,以及一个MAC和PHY之间的管理接口。RMII全称为“简化的媒体独立接口”,是IEEE-802.3u标准中除MII接口之外的另一种实现。(此处内容来源于网络)2.独立于介质的接口(MII)独立于介质的接口(MII)用于MAC与外接的PHY互联,支持10Mbit/...

2020-02-28 08:40:31 1466

转载 单片机联网,UIP实现tcp/udp协议

原文地址:https://www.cnblogs.com/dengxiaojun/p/4375047.htmlUIP是单片机界联网的一个很好地选择,移植这个库有点复杂,首先是第一步,网卡驱动要写好,使用的网卡芯片为ENC28J60,驱动可以再工程包里面找到//配置网卡硬件,并设置MAC地址 //返回值:0,正常;1,失败;u8 tapdev_init(u8* macaddr){ ...

2020-02-25 16:43:12 1105

原创 C++用顶层函数重载操作符

几句话总结:以顶层函数的形式重载操作符时,二元操作符重载函数必须有两个参数,一元操作符重载必须有一个参数。以顶层函数的形式重载操作符时的好处是:c1 = c2 + 13.5; c1 = 13.5 + c2;2用成员函数时会报错。具体看下面解释。但是用顶层函数不会。但是顶层函数实现时,不能直接调用类里面的私有成员,改进的方式是把顶层函数设为该类的友元函数。在前面将操作符重载函数声明...

2020-02-19 17:33:27 300

原创 C++重载操作符的优先级

重载操作符不能改变操作符的优先级和语法特性。

2020-02-19 17:33:18 690

原创 C++基本操作符重载

操作符重载指的是将C++提供的操作符进行重新定义,使之满足我们所需要的一些功能。比如类的加减乘除。我们可以定义类中的某一个成员变量进行加减乘除。在C++中可以重载的操作符有:+ - * / % ^ & | ~ ! = < > += -= *= /= %= ^= &= |=<< >> &lt...

2020-02-19 17:33:09 221

原创 C++ typeid操作符

typeid操作符用于判断表达式的类型,注意它和sizeof一样是一个操作符而不是函数。如果需要使用typeid操作符,最好加上typeinfo头文件。给出以下定义int a;double b;char * c;long d;下表列出了使用typeid操作符的表达式的值:操作符typeid返回的是一个type_info类(用于描述数据类型的一个系统类)对象的引用。这个...

2020-02-19 17:33:00 316

原创 C++ dynamic_cast操作符

在C++中,编译期的类型转换有可能会在运行时出现错误,特别是涉及到类对象的指针或引用操作时,更容易产生错误。Dynamic_cast操作符则可以在运行期对可能产生问题的类型转换进行测试。#include<iostream>using namespace std;class base{public : void m(){cout<<"m"<&lt...

2020-02-19 17:32:53 234

原创 C++抽象基类和纯虚成员函数

公共接口是指一系列成员函数的集合,支持该接口的类必须以合适的方式重新定义这些成员函数,否则就无法创建对象。在C++中,可以通过抽象基类来实现公共接口。纯虚函数纯虚成员函数的声明语法如下:virtual 函数返回类型 函数名(函数参数) = 0;纯虚成员函数没有函数体,只有函数声明,在纯虚函数声明结尾加上“=0”表明此函数为纯虚成员函数。抽象基类包含纯虚成员函数的类即为抽...

2020-02-19 17:32:44 847

原创 C++重载、覆盖和遮蔽

这个讲的有点绕,多看几遍,理解一下,再来总结吧。函数签名包括函数名和函数参数的个数、顺序以及参数数据类型。1) 重载函数重载是指两个函数具有相同的函数名,但是函数参数个数或参数类型不同。函数重载多发生在顶层函数之间或者同一个类中,函数重载不需要构成继承关系。2) 覆盖覆盖构成条件和多态构成条件是相同的,覆盖是一种函数间的表现关系,而多态描述的是函数的一种性质,二者所描述的其...

2020-02-14 08:14:47 215

原创 C++静态成员函数

一句话总结:只有非静态成员函数才可以成为虚函数,而静态成员函数不能声明为虚函数。class test{public : virtual test(){a = new int[5];} //error static void g(); //ok virtual void f(); //ok virtual static vo...

2020-02-14 08:14:22 190

原创 C++虚析构函数

一句话总结:通常来说,如果基类中存在一个指向动态分配内存的成员变量,并且基类的析构函数中定义了释放该动态分配内存的代码,则应该将基类的析构函数声明为虚函数。不然会造成内存泄漏。在类中,构造函数用于初始化对象及相关操作,构造函数是不能声明为虚函数的,因为在执行构造函数前对象尚未完成创建,虚函数表尚不存在,此时就无法去查询虚函数表,因此也就无法得知该调用哪一个构造函数了。析构函数则用于销毁对象...

2020-02-14 08:14:11 113

原创 C++虚成员函数表vtable

使用多态会降低程序运行效率,使用多态的程序会使用更多的存储空间,存储虚函数表等内容,而且在调用函数时需要去虚函数表中查询函数入口地址,这会增加程序运行时间。在设计程序时,程序设计人员可以选择性的使用多态,对于有需要的函数使用多态,对于其它的函数则不要采用多态。通常情况下,如果一个类需要作为基类,并且期望在派生类中修改某成员函数的功能,并且在使用类对象的时候会采用指针或引用的形式访问该函数,则将该函...

2020-02-14 08:14:01 118

原创 C++虚成员函数

和普通的成员函数一样,虚成员函数同样可以被继承。我们只需要将基类中的display函数通过virtual关键字声明为虚函数,之后即使在派生类中display函数声明时未加上virtual关键字,但它在所有的派生类中都将自动成为虚函数。#include<iostream>using namespace std;class base{public: virtual ...

2020-02-14 08:13:02 235

原创 C++多态的概念及前提条件

在前面的所有列举的程序中,函数的入口地址与函数名是在编译时进行绑定的,我们称之为编译期绑定,而多态的功能则是将函数名动态绑定到函数入口地址,这样的动态绑定过程称为运行期绑定。编译期绑定是指在程序编译时就将函数名与函数入口地址绑定到一起,运行期绑定是指在程序运行时才将函数名与函数入口地址绑定到一起,而在运行期绑定的函数我们称其是多态的。#include<iostream>usin...

2020-02-14 08:12:48 337

原创 C++虚基类

在多继承时很容易产生命名冲突问题,如果我们很小心地将所有类中的成员变量及成员函数都命名为不同的名字时,命名冲突依然有可能发生,比如非常经典的菱形继承层次。类A派生出类B和类C,类D继承自类B和类C,这个时候类A中的成员变量和成员函数继承到类D中变成了两份,一份来自A派生B然后派生D这一路,另一份来自A派生C然后派生D这一条路。class A{public: void s...

2020-02-14 08:12:37 467

原创 C++多继承

在前面所有的例子中,派生类都只有一个基类,我们成这种情况为单继承。而在C++中一个派生类中允许有两个及以上的基类,我们称这种情况为多继承。在多继承中,派生类继承了所有基类中的所有成员变量和成员函数,这些继承过来的成员变量及成员函数其访问规则与单继承是相同的。使用多继承可以描述事物之间的组合关系,但是如此一来也可能会增加命名冲突的可能性,冲突可能很有可能发生在基类与基类之间,基类与派生类之间。命...

2020-02-14 08:12:26 302

原创 C++继承机制下的析构函数

构造函数的执行顺序是按照继承顺序自顶向下的,从基类到派生类,而析构函数的执行顺序是按照继承顺序自下向上,从派生类到基类。因为每一个类中最多只能有一个析构函数,因此调用的时候并不会出现二义性,因此析构函数不需要显式的调用。...

2020-02-14 08:12:14 254

原创 C++派生类构造函数调用规则

一句话总结:基类必须要定义一个构造函数。派生类构造函数可以自动调用基类的默认构造函数,但是前提是默认构造函数必须存在。通常情况下,默认构造函数系统会自动生成的,但是如果在基类中,我们自己定义了一个带参数的构造函数,这个时候,系统是不会为基类自动生成默认构造函数的,这个时候派生类则无法自动调用基类的默认构造函数了,因为基类根本就不存在默认构造函数。遇到这种情况有两种解决方案:其一,在基类中定义一...

2020-02-14 08:12:01 1113

原创 C++继承机制下的构造函数

派生类同样有构造函数。当我们创建一个派生类对象的时候,基类构造函数将会被自动调用,用于初始化派生类从基类中继承过来的成员变量。而派生类中新增的成员变量则需要重新定义构造函数用于初始化了。#include<iostream>using namespace std;class book{public: book(); book(char* a, double...

2020-02-13 10:55:35 318

原创 C++间接继承

假设类C继承自类B,类B继承自类A。那么类C中的除了能够继承B类的成员函数和成员变量外,同样也能继承B类继承自A类的所有成员。换言之,类C可以继承来自类A的所有成员。因此继承既可以是直接继承,也可以是间接继承。间接继承所得的成员变量和成员函数,其属性遵循直接继承时的规则。class A{public: int getx(){return x;} void setx(int...

2020-02-13 10:42:18 720

原创 C++名字隐藏

如果派生类中新增一个成员变量,该成员变量与基类中的成员变量同名,则新增的成员变量就会遮蔽从基类中继承过来的成员变量。同理,如果派生类中新增的成员函数与基类中的成员函数同名,则该新增的成员函数就会遮蔽从基类中继承过来的成员函数。#include<iostream>using namespace std;class basic{public: void setx(i...

2020-02-13 10:35:21 262

原创 C++改变基类成员在派生类中的访问属性

使用using声明可以改变基类成员在派生类中的访问属性。我们知道基类的公有成员经过公有继承,在派生类中其属性为public的,但是通过using 声明,我们可以将其改为private或protected属性。enum language{cpp, java, python,javascript, php, ruby};class book{public: void setpri...

2020-02-13 10:23:58 743

原创 C++继承方式

一句话总结:继承方式有三种:public、protected和private。继承后父类成员属性为private子类不能访问,成员属性为protected和public,子类根据继承方式有对应的访问权限。从基类派生出派生类,派生类继承基类的继承方式有三种:public、protected和private。在未指定的情况下编译器会默认继承方式为protected或private方式。1...

2020-02-13 10:00:01 310

原创 C++继承的概念及语法

被继承的类称为父类或基类,继承的类称为子类或派生类。由于派生类可以将基类的代码继承过来,无需重新设计,因而继承解决了代码重用的问题,大大提高了软件的开发效率。采用公用继承方式,则基类的公有成员变量和成员函数的属性继承到派生类后不发生变化。如果在继承过程中不指名继承方式时,编译器系统会默认继承方式为private或protected属性。enum language{cpp, java, pyt...

2020-02-13 09:36:19 191

转载 C的面向对象化

1.在面向对象的语言里面,出现了类的概念。类是对特定数据的特定操作的集合体。类包含了两个范畴:数据和操作。而C语言中的struct仅仅是数据的集合,我们可以利用函数指针将struct模拟为一个包含数据和操作的”类”。2.用C程序模拟一个最简单的“类”#define C_Class structC_Class A { C_Class A *A_this; ...

2020-02-13 08:37:51 224

原创 C++友元函数和友元类

友元是什么:友元不是成员函数,但是它可以访问类中的私有成员。友元函数通过friend关键字,我们可以将不属于当前类的一个函数在当前类中加以声明,该函数便可以成为当前类的友元函数。成员函数也可以是友元函数。#include<iostream>using namespace std;class book{public: book(){} book...

2020-02-13 08:10:52 265

原创 C++类与static关键字

五句话概括:静态成员变量和静态成员函数都属于类的,不属于具体某个对象。 静态成员变量定义时,可以在类外定义,不受访问权限限制,但是在访问时,却要遵循访问权限限制。 静态成员函数只能访问静态成员变量。普通函数既可以访问静态成员变量,也可以访问普通成员变量。 静态成员变量...

2020-02-13 08:10:40 119

原创 C++类与const关键字

一句话概括:const成员变量参考C语言;const成员函数中,const写在函数后面,如:func()const,const成员函数只能使用const成员变量,但不能修改const成员变量;const对象,该对象就只能调用类中的常成员函数了。如果要修改常对象中的成员变量,那么应该将该对象设置为mutable(可变的)。const成员变量const成员变量其用法和普通的const变...

2020-02-13 08:10:18 133

转载 C语言全局变量那些事儿

原地址:https://www.cnblogs.com/alantu2018/p/8503447.html作为一名程序员,如果说沉迷一门编程语言算作一种乐趣的话,那么与此同时反过来去黑一门编程语言就是这种乐趣的升华。今天我们就来黑一把C语言,好好展示一下这门经典语言令人抓狂的一面。我们知道,全局变量是C语言语法和语义中一个很重要的知识点,首先它的存在意义需要从三个不同角度去理解:对于...

2020-02-12 09:56:45 880

原创 C++类与new和delete操作符

操作符delete和delete[]在释放对象存储空间的同时也会调用析构函数,而free函数则不会调用析构函数。#include<iostream>using namespace std;class test{public: test(int i = 1){num = i;cout<<num<<" Constructor"<<...

2020-02-12 08:18:06 95

原创 C++常量指针this

在每一个成员函数中都包含一个常量指针,我们称其为this指针,该指针指向调用本函数的对象,其值为该对象的首地址。通过该指针,我们可以在成员函数的函数体内访问对象。其中this是C++的一个关键字。#include<iostream>using namespace std; class book{public: book(){price = 0.0; ...

2020-02-12 08:17:59 1078 4

原创 C++析构函数

1、概述在创建对象的时候系统会自动调用构造函数,在对象需要被销毁的时候同样系统会自动调用一个函数,这个函数被称之为析构函数。构函数与普通成员函数相比,有如下特征: 无返回值 没有参数,不能被重载,因此一个类也只能含有一个析构函数 函数名必须为“~类名”的形式,符号“~”与类名之间可以有空格 #include<iostream>using ...

2020-02-12 08:17:48 208

原创 C++拷贝构造函数

一句话总结:拷贝构造函数,就是通过拷贝对象的方式创建一个新对象。什么时候需要使用呢?如果一个类中包含指向动态分配存储空间的指针类型的成员变量时,就应该为这个类设计一个拷贝构造函数。拷贝构造函数,顾名思义,就是通过拷贝对象的方式创建一个新对象。book(book &b);book(const book &b);book(const book &b, price ...

2020-02-12 08:17:37 157

原创 C++转型构造函数

一句话总结:转换型构造函数就是只有一个参数的构造函数,可以将一些其他类型的变量转换成类对象。当要阻止这种隐形转换时,需要在构造函数前面加关键字“explicit”;转型构造函数用于类型间的转换,将其它数据类型转变为类的对象类型。转型构造函数只有一个参数,如果该参数是int型,则我们是将int型对象转换为类对象,如果该参数类型为char *类型,我们则是将字符串常量转换为类对象。class...

2020-02-12 08:17:27 720

原创 C++利用构造函数限制对象的创建

总的一句话概括:限制创建那些完全没有初始化的对象。那种对象没意义。所以我们要尽量限制掉默认构造函数,自己写一个带参数的初始化构造函数。首先需要知道的是我们是在什么样的情况下才需要限制对象的创建。限制对象的创建不代表我们想禁止创建对象,只是加以限制而已,限制创建对象时能够按照我们需要的那样创建,而不能随意的创建对象。比如下面代码,我们定义了一个book类,声明对象的时候自然是为了描述某一本具...

2020-02-12 08:17:16 392

原创 C++使用默认参数的构造函数

如果在创建对象的时候,没有传递实参给该参数p,则该参数会被默认设置为5.0。book(char* a, double p = 5.0);#include<iostream>using namespace std;class book{public: book(){} book(char* a, double p = 5.0);//默认参数5 ...

2020-02-12 08:17:04 413

原创 C++参数初始化表

通过参数初始化表同样可以对对象进行初始化,在函数首部与函数体之间增添了一个冒并加上title(a),price(p)语句,这个语句的意思相当于函数体内部的 title = a; price = p; 语句。这样做对于两个成员变量的类来说看不出什么优势,但是一旦当成员变量非常多的时候,通过参数初始化列表进行初始化其优势便可以显现出来了,如此写法简洁明了。class book{public:...

2020-02-12 08:16:52 1235

原创 C++构造函数

构造函数是类中一种特殊的成员函数,其特殊之处有三点:构造函数的函数名必须与类名相同; 构造函数无返回值; 当我们创建类对象的时候构造函数会被自动调用,而无需我们主动调用。一个类中可以有多个构造函数,构造函数之间构成函数重载的关系。#include<iostream>using namespace std;class book{public: book(...

2020-02-12 08:16:27 93

原创 C++通过引用来传递和返回类对象

通常来讲,除非是迫不得已,否则最好不要采用传值的方式传递和返回对象,这是因为采用传值的方式传递和返回对象的过程中需要经历对象间的拷贝操作,这样会在一定程度上降低程序运行的效率,从而使得待处理数据量增大,增加内存的使用。而采用引用或指针的方式则不会有这样的问题,而实际上,因为引用表达更加简练直观,因此也较少使用指针来传递对象或作为函数返回值。#include<iostream>...

2020-02-11 10:25:22 140

原创 C++类class和结构体struct区别

在C++中,没有抛弃C语言中的struct关键字,其意义就在于给C语言程序开发人员有一个归属感,并且能让C++编译器兼容以前用C语言开发出来的项目。在C++中,struct类似于class,在其中既可以定义数据成员,又可以定义成员函数。 在C++中,struct与class基本是通用的,唯一不同的是如果使用class关键字,类中定义的成员变量或成员函数默认都是private属性的...

2020-02-11 10:12:16 129

letter-shell

letter-shell

2024-01-10

stm32H7 压缩算法

stm32H7 压缩算法

2024-01-10

JLink-Windows-V794c-x86-64

最新JLINK segger 驱动

2024-01-10

keil常用脚本.zip

包含3个文件,z_rename.bat:给keil产生的bin和hex文件插入当前日期。z_del.bat删除bin和hex后缀文件。z_发布.bat将stm32工程生成的临时文件删除。减少工程大小。

2021-03-31

stm32f103+enc28j60-20210330.zip

stm32f103上面实现enc28j60驱动。经过实际测试,可用。

2021-03-30

MDK暗黑色主题.zip

效果https://blog.csdn.net/qq_28938511/article/details/112271805

2021-01-06

MDK 常用的一些插件.zip

具体看https://blog.csdn.net/qq_28938511/article/details/112261584

2021-01-06

uartapp.zip

linux下串口应用编程,配合教程https://blog.csdn.net/qq_28938511/article/details/109394828使用

2020-10-30

Linux字符设备操作.zip

该资源包含LED控制和蜂鸣器控制以及ADC读取。配套教程https://blog.csdn.net/qq_28938511/article/details/109265599使用。

2020-10-24

io_file.zip

本资源配套教程https://blog.csdn.net/qq_28938511/article/details/109229325使用。

2020-10-24

制作最小Linux系统所需文件

制作迅为iTOP-4412(1+8 POP版本)最小Linux系统所需文件。配套博客文《二、制作最小linux系统》使用。

2020-10-09

搭建最小系统所需文件.zip

搭建迅为iTOP-4412(1+8 POP版本)最小Linux系统所需文件及命令。包含所使用超级终端。

2020-10-08

XunLeiSetup11.0.2.52xl(抢先体验版).exe

迅雷11抢先版,只要登录就可以赠送2T的迅雷云空间。云空间支持离线下载。从云空间下载的速度也能达到2-10M/S,不过具体要看个人带宽。本人亲测是在2-10M每秒。

2020-09-14

pure-css3-lighter.zip

具体效果查看该https://www.html5tricks.com/demo/pure-css3-lighter/index.html

2020-04-11

keil5自定义配色方案.zip

重要事情说三遍,使用看下面这段话:(替换keil5MDK\UV4下的global.prop和global.prop.def)x3遍 替换前建议保存一下原来的配色方案。如果不满意可以恢复。

2020-04-09

单片机常用滤波算法.zip

包含多种单片机常用滤波算法。主要包括平均,限幅,中位值及其各种组合滤波算法介绍,并包含C代码实例。可以直接套用。非常方便。

2020-04-09

GoogleEarthSetup.exe

谷歌高清地图工具,分享给有需要的人。win7可以直接使用,win10系统的需要右键属性里设置成兼容win7就可以了。

2020-03-30

空空如也

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

TA关注的人

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