自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(205)
  • 问答 (1)
  • 收藏
  • 关注

原创 施密特触发器的原理及其作用学习笔记

当输入在2.4V~2.6V之间时,输出状态取决于历史输入(上升或下降),而非固定为低电平。我这里只是举一个一个标准正弦波的例子,如果输入的是一个正弦波,在0到2.6V,施密特触发器输出的是一个高电平,2.6V以上,输出的是一个低电平,2.6V到2.4V之间仍是低电平(上下限之间,维持状态),2.4V以下则是高电平。实现两个不同的阈值电压(高阈值 VT+VT+​ 和低阈值 VT−VT−​),从而解决输入信号噪声或抖动导致的输出不稳定问题。的电压比较器,它的核心原理是通过。

2025-04-01 10:46:54 249

原创 简单介绍一下ModBus协议

下面再提供一个例子,方便大家对照,370607D10708DEE7,表示向地址为0x37的从设备,进行功能码为0x06的操作,也就是写该设备的某一个寄存器,这个寄存器的地址为0x07D1,写入的值为0x0708,其循环冗余码为DEE7,该循环冗余码是通过前面所有字节计算而来的,用于从设备判断所接收的数据是否无效。- 数据域 (Data Field):包含要执行的操作的数据(长度可变,具体有多长通常是由功能码来决定的,也就是说不同的操作,需要描述的信息长度不同)。

2025-01-15 15:08:52 939

原创 MOS管为什么会有夹断,夹断后为什么会有电流?该电流为什么是恒定的?

因为耗尽层有强大的内电场,该电场会将更多电子拉进到D极,再流回到电源正极。该PN结的电场方向是P指向N而耗尽层的电场方向(即内电场的方向)则相反,因此是靠近N极的是正,靠近P极的是负,则会对电子施加一个向着D极的力,将其拉到D极。可以认为D极加压使得D极的耗尽层增大(原因是N极接正极,P极接负极,电子被吸引到N极靠近正极的那一侧,电子从P极推到N极的过程中8电子稳定结构增多,耗尽层增大),使得耗尽层将靠近D极的N沟道给堵住了,也就是夹断。以下是对MOS管MOS管为什么会有夹断,夹断后为什么还会有电流?

2025-01-13 22:38:58 515 2

原创 在STM32F103xx performance line block diagram找不到某一个外设所挂载在那条总线怎么办?

举例,如果我想找到PWR外设所对应的总线,官方的STM32F103xx performance line block diagram上是找不到的。在APB1上找到,因此可以判定为PWR挂载在APB1上。那么我们就可以去官方的库函数中找。

2024-12-28 13:45:16 278

原创 STM32使用UART发送字符串与printf输出重定向

需要提醒的,我们主要是使用printf函数来测试uart接口的功能,, 而printf函数的标准输出设备是显示屏,因此需要将输出重定向到uart口上而不是显示屏上,就需要重写printf,但是,prinft只是一个函数宏,实际靠的还是fputc,所以总的来说还是要重写fputc。因此,我们如果使用调试器(或者叫做仿真器)进行测试调试代码的话,想要有数据从单片机的uart口输出,那么我们应该关闭半主机模式。需要特别注意的是,如果你使用调试器进行Download,也就是下图这个东西,那么使用的将是半主机模式。

2024-12-27 21:55:04 1949

原创 如何在Window下下载与安装sqlite3?

自己的电脑是64位的就下载64位的DLL,如果是32位的就下载32位的DLL。打开终端,输入sqlite3,看看是否有版本号输出。将两个压缩包放到自己想放的目录下并解压,如下图。4. 最后验证sqlite3是否安装成功。到sqlite3的官网下载两个压缩包。将该目录放到系统环境变量下。

2024-12-25 11:42:31 317

原创 学习与理解LabVIEW中多列列表框项名和项首字符串属性

由图可知,输入给项首字符串的是一个一维数组,设置表的单元格的大小时,只要设置其中的一个单元格的大小,即可影响到所有的单元格大小。实际上,由输入的数据类型也可以理解项首字符串和项名,项名输入的是一个二维数组,而项首字符串输入的是一个一维数组。项名,即每一项的名称,可以理解为表身,即不包括表头,设置项名时,输入的是一个二维数组(可以看作为一个表)现在介绍该多列列表框的两个属性,分别是项名和项首字符串,这个容易搞错。垂直线和水平线指的是上图中组成单元格的竖线和横线(不包括行首列首)项首字符串即表头,不包括表身。

2024-11-22 11:50:27 546

原创 学习与理解LabVIEW中的布尔开关颜色设置

由上图可知,需要一个数组,这个数组是簇数组,即每个元素都是簇,且这个簇中包含两个数值常量,通过设置这两个数值常量即可设置颜色。首先要区分好布尔控件的布尔文本的背景色和文本颜色以及控件颜色。由图可知,绿色为文本背景色,红色为文本颜色,蓝色的是控件颜色。下面介绍如何设置控件颜色和为控件选择颜色。那么如何确定这个数值常量应该填什么呢?运行后即可得到该颜色所对应的数值。将数值设置到簇中后运行,得到。(数值表示方式选择长整形)

2024-11-21 14:31:09 656

原创 学习与理解LabVIEW中的格式化写入(Format into String)函数

从Test_Log表中的SN那一列,选出满足Write_Serial_Number等于某个值且Result等于Pass的单元。初始字符串将会和已经填充好的格式化字符串拼接在一起,组成结果字符串,初始字符串在前。将10进制数值转换成16进制数,%x表示16进制格式。有例子会更容易学习与理解LabVIEW中的函数。可以用在执行SQL语句或者进行数值进制转换。1. 执行SQL语句。

2024-11-19 11:06:55 471

原创 学习与理解LabVIEW中的扫描值(Scan Value)函数

由图可知,就是将满足格式字符串的子串转换成格式所对应的数值,不能能转换的部分可以从输出字符串端口获取。此处遇到A,不满足%d,直接结束,因此值是0,输出字符串为AF123AFFF。扫描满足的子串是从前往后,直到遇到第一个不满足格式的字符,则结束扫描。有例子会更容易学习与理解LabVIEW中的函数。

2024-11-19 10:48:40 495

原创 学习与理解LabVIEW中字符串的正常显示和16进制显示

2. **实际发送的数据**: 在“十六进制显示”模式下,LabVIEW认为你输入的是一个十六进制的值01,而不是字符“0”和“1”的ASCII编码。2. **实际发送的数据**: 在“正常显示”模式下,这个“01”实际上对应的是ASCII字符“0”和“1”的编码。3. **下位机接收到的数据**: 下位机收到的是一个字节0x01,它对应的是数值1,而不是字符“0”或“1”的ASCII码。1. **输入十六进制数据**: 你在LabVIEW的输入框中选择“十六进制显示”模式,并输入“01”。

2024-08-28 14:33:35 1683

原创 LabVIEW学习-LabVIEW处理带分隔符的字符串从而获取数据

实际这两个函数是对下面这个函数的封装,即电子表格字符串至数组转换函数,如果LabVIEW版本过低,大可自己写一个”分隔符字符串函至一维字符串“或者"一维字符串数组至分隔符字符串"函数。因为"数组至电子表格字符串"函数会在转换后的字符串末尾加一个换行符,因此我们需要将其剥离出来,通过截取字符串的方式,只截取换行符前面的字符,这个思想后面会使用到。带分隔符的字符串很好处理,只需要使用"分隔符字符串至一维字符串数组"函数或者"一维字符串数组至分隔符字符串"函数就可以很轻松地处理带分隔符地字符串。

2024-07-24 20:42:36 2207

原创 如何让LabVIEW程序框图的图标简化,从而节省空间?

取消掉箭头所示的√即可。

2024-07-15 21:09:44 618

原创 LabVIEW学习-LabVIEW储存Excel表格

"添加至文件",意思是说要写入excel的方式,是覆盖式写入还是在原excel文件中,有数据的部分后,进行添加数据。"转置"的意思就是是横着写还是竖着写,默认是横着写,如果转置的话就会编程竖着写。"基路径“就是基本路径,"名称或相对路径"指的是在基路径上添加什么路径。所在位置,函数选板->定时->获取日期/时间(秒)函数选板->文件IO->文件常量->应用程序目录。函数选板->字符串->格式化日期/时间字符串。函数选板->文件IO->写入带分隔符表格。函数选板->文件IO->创建路径。

2024-07-13 17:36:12 2727

原创 LabVIEW学习-LabVIEW公式

2024-07-13 17:06:09 205

原创 使用STM32单片机的Keil4应该如何设置

设置Define: STM32F10X_MD,USE_STDPERIRH_DRIVER 指定你要用的是那一款处理器,这样程序就会有针对性的跳转代码,忽略分支, 使用标准驱动外设。还需要注意的是,正确的连线方式是,TP-Link连接到STM32单片机,然后TP-LINK和STM32单片机分别接上USB线,然后这两条USB线连接到电脑上。6. 在User的文件下创建main.c文件,然后再在keil中手动添加到User分组中。选中"三个正方形的按钮",点击Start分组,点击添加文件。

2024-04-19 20:06:20 1277

原创 python字符切片的规则

5. 如果第一个:两边都填写了值,切片判断范围默认是左闭右开区间,如str[1:5:1],则表示从1开始(包括1),最多能取到下标为4的元素,而不能取到5。跟range一样有三个参数,分别是x:y:z,代表的含义分别为左边界,右边界(注意该范围是左闭右开的,也就是说取不到右值)和步长。1. 切片是从左往右还是从右往左,看的是步长的正负,如果步长为正值则是从左往右,步长为负则是从右往左。3. 如果第一个:左边没有填写值,如str[:5:2],则左边界默认从0开始。

2024-04-12 21:58:59 490

原创 简单学习串口通信

串口通信只需要三根线即可一位位进行通信了,分别是Tx(transmit),Rx(Receive)以及GND(Ground)三根线,分别代表的意思是发送线,接收线以及地线,发送线和接受线相连,接收线和发送线相连,地线和地线相连,这样就可以使数据一位位的顺序在两个设备之间进行通信了。第一位是起始位,是低电平,最后一位是结束位,是高电平,中间的是数据位,数据位是传输有效数据的部分。一般有8,7,5位数据长度的帧格式。需要注意的是,串口通讯两个设备之间数据帧格式和波特率的设置都要相同,否则会出现乱码的情况。

2024-03-21 15:56:58 335

原创 Qt笔记 事件分发

实际上,在事件分发和事件处理之间,事件分发器会调用一个函数叫做event,这个event所代表的含义就是我们用户要处理的这个事件,多数情况下我们对事件做任何处理,而是由事件处理函数来进行处理。当然我们也可以设置event函数来拦截事件,这样就不会分发到对应的事件处理函数上,而是在event函数就处理完了。总的来说,widget的event方法就是在处理函数调用之前进行拦截,可以针对一些事件在处理进行特殊处理。我们知道,事件的产生和处理主要分为四个部分,事件产生,事件过滤,事件分发以及事件处理。

2024-03-21 13:21:30 392

原创 Qt笔记 计时器

使用startTimer生成的计时器会在周期结束后发出计时器事件,widget对象调用计时器处理函数来处理该计时器事件。下面介绍设计计时器的两种方法,分别是利用信号与槽来使用计时器,利用计时器事件来使用计时器。使用Timer动态生成的计时器,每到周期就会发出一个timeout信号。感觉还是第一种方法信号与槽好用。1. 利用信号与槽来使用计时器。2.利用计时器事件来使用计时器。

2024-03-21 01:14:53 513

原创 Qt笔记 事件处理_鼠标事件

而且这个eventFilter是一个虚函数,我们是可以对该函数进行重写的,可以在该函数内编辑那些是可以过滤掉的。(默认情况下是不对任何事件进行过滤的),我们翻查Qt助手可以知道,QObject是QApplication的基类,因此QApplication中可以定义事件过滤,因此可以说事件过滤是main函数中的QAppliaction生成的对象a所完成的。上面所说的一系列动作都是自动完成的,这些事件函数都是回调函数,作为使用者来说,我们只需要指定函数的处理动作,关于函数是如何是如何调用的,我们不需要关心。

2024-03-21 00:10:02 877

原创 Qt笔记 标准对话框

防止内存泄漏,如果我使用new来创建对象的话,只有当主界面关闭的时候,才会调用进程对话框的析构函数,这意味着当主界面没有关闭的时候,我们可以创建无数个进程对话框然后再关闭,但是这个时候创建进程对话框的内存没有回收,这可能导致内存泄漏。当创建一个 QObject 对象并指定了它的父对象时,这个对象就会被加入到父对象所在的对象树中。什么是模态对话框,模态对话框就是对对话框后面的背景(即主界面)进行模糊化,即模态对话框弹出的时候,不能再使用背景的任何功能,直到你将模态对话框关闭。消息对话框默认是模态对话框。

2024-03-20 00:35:38 861

原创 Qt笔记 mainwindow

mainwindow是用来做应用界面的,有菜单栏,工具栏,浮动窗口,中心部件以及状态栏这几个部分组成。注意引用格式":/.../.../",这个双引号不要忘了,否则引用资源不成功。因为是状态栏,是栏,不能直接设置文本,但可以通过添加组件的方式来显示文本。如何将图片加入到工程文件,使得该工程文件调用图片不受绝对目录的影响。这样就可以做到在工程文件中引用资源,而不是依靠绝对路径。actionnew等都是菜单下的action模块。点击Open in Editor。一般的中心部件都是文本编辑器。

2024-03-19 21:48:31 536

原创 Qt笔记 信号和槽

槽是一个实实在在的函数,既要进行声明也要实现,这点上和c++中常规的函数没有什么区别,但是槽的返回值一定void类型,槽可以有参数,参数的类型和数量完全取决于你的需求,槽对参数并没有限制。可以认为信号不是一个函数,而是一个函数的声明。在Qt中,如何将两个对象进行关联,让一个对象发出信号,然后另外一个对象接收到信号后,执行该对象的一个方法,要实现这种方式,则需要使用到信号和槽机制。2. 如果信号所在的类无法直接发出信号,则在组件跳转槽中抛出一个连接好的信号槽所需的信号,从而实现间接连接信号和信号槽。

2024-03-19 12:59:28 441

原创 Qt对象树

即当我们关闭一个窗口的时候,窗口部件的销毁同时会自动销毁当前窗口里面的其他子部件,而这个子部件是会自动调用delete将相关的内存空间给释放掉,这样我们创建组件的时候,只需要写new而不用写delete。由运行结果可知,我们并没有主动调用组件MyClass的析构函数,即new后没有delete,但是该析构函数仍然被调用了,这是因为当我们关闭窗口的时候,将会调用窗口的析构函数,同时会自动调用该窗口下的组件的析构函数,而不用我们自己调用,因此在对象树的帮助下,我们只需要new而不需要delete。

2024-03-18 23:28:42 234

原创 c++11笔记 跨平台线程池

第二个参数是可调用对象(函数,函数指针,函数对象,lambda表达式),该可调用对象的返回值必须是Bool类型,当返回值为true且被notify通知的时候,将会上锁,等待取消,线程继续执行,否则线程将一直堵塞。也就就是说condition_variable会有一个上锁和解锁的操作,当执行sleep(堵塞)的时候,锁将会被释放,当被唤醒的时候,锁将会被锁上,然后判断可调用对象,来判断是否可以继续执行,可调用对象返回false则继续堵塞,返回true则执行。//将参数绑定在函数中,生成一个新的可调用对象。

2024-03-18 18:20:09 653

原创 万能引用,引用折叠,完美转发的关系

如果用了万能引用,不管你传的类型是左值还是左值引用,最后T都会被推导成左值引用,也就是int& &&a不管你传的值是右值还是右值引用,最后T都会被推导成右值引用,也就是int&& &&。一般来说上面的三个是一起搭配使用的,使用了万能引用就要考虑各种参数传进来最终推导出来的类型是什么样的,这个时候就需要懂得引用折叠的规则,推导除了最终类型,还需考虑参数类型到了函数体内会不会发生改变,有没有右值引用到了函数体被当成左值引用的情况,如果这种情况发生了怎么办,如果我们不希望这种情况发生,则要使用万能引用。

2024-03-18 00:32:45 980 1

原创 c/c++的内存分配,详细说一下栈、堆和静态存储区

静态存储区:静态存储区又叫做数据段,初始化的全局变量和初始化的静态变量都存放在静态存储区,如果没有初始化的话,就会放在另一块地方,叫做BBS段(Block By Symbol 符号开始的块)。栈区(Stack):由编译器自动分配和回收,栈中存放函数调用的相关信息,栈帧(记录函数的栈帧开始的位置),参数,局部变量,返回地址。其操作方法类似于数据结构中的栈。堆区(Heap):由程序员自己分配和释放堆中的内存空间,如果程序员没有释放则由操作系统来收回。文字常量区:存放字符串常量存放在这里,程序结束后由系统释放。

2024-03-13 19:32:13 490

原创 说说你对c和c++的看法,c和c++有什么区别?

7. c++可以使用const定义的常量来开辟数组,而c语言不可以,原因是数组的大小(如arr[SIZE]中的SIZE)必须是一个编译时常量,而在c++中,const关键字定义的常量被认为是编译时常量,而c语言不是。1. c语言是面向过程的语言,而c++是面向对象的语言,那么面向对象的语言是什么?6. c++所有非静态函数和全局变量默认是外连接而c变量和函数默认是内连接,如果是外连接的话,意味着在整个程序中都是可见的,而在c语言中内连接使得全局变量和函数只有在声明它们的源文件可见。

2024-03-13 18:58:01 330

原创 函数指针和指针函数

参数列表,函数括号里面的整个部分就代表参数列表,而特征标它包括函数名称,参数的个数,参数的类型以及参数的顺序,有时还包括const以及volatile修饰符,但是不包括返回值,函数重载和覆盖都是通过特征标来判定的,注意,这两条赋值方式效果上完全相同,我们知道函数名代表函数的地址,此处的&Test仅仅是帮助理解我们需要的是函数的地址,而不是真的去取了函数地址的地址,只是帮助理解。比如一个函数接收的一个参数是一个函数指针,则只要作为参数的函数指针的类型满足该函数,则都可以套入该函数来执行相同的操作。

2024-03-13 16:17:44 294

原创 vector与list的区别与应用?

vector和数组类似,vector是一个在内存中连续存放且可以自动增长的容器,因此支持随机访问,随机访问的时间复杂度是O(1),跟数组类型。因为是连续存放的,因此插入和删除元素的时间复杂度较高(除了在尾部进行插入和删除),原因是插入元素需要将该位置的元素后面的所有元素都移动出一格来存放该插入元素,删除就要将该位置后面的元素往前挪,因此其为O(n)。list是由双向链表实现的,双向链表就是结点有三个成员,分别是当前结点的值,指向上一个结点的指针以及指向下一个结点的指针。vector与list的区别与应用?

2024-03-13 14:54:17 481

原创 请描述一下c语言的编译链接过程

这一步主要处理源代码中的预处理指令,读取代码,对条件编译指令进行测试,确定将那些代码加入到预处理文件中,将头文件相应内容插入到源代码中,将宏定义进行替换,生成一个没有宏定义,没有条件编译指令,没有特殊符号的输出文件。汇编器将汇编语言文件进一步翻译成机器语言文件,机器语言文件也叫做目标文件,目标文件中存放着与源代码等效的机器语言代码。源代码文件(.c或.cpp) -> 预处理文件(.i或者.ii) -> 汇编语言文件(.s) -> 机器语言文件(也叫目标文件.o) -> 可执行文件(.exe或者.out)。

2024-03-13 14:06:52 237

原创 移动构造函数

移动构造函数就是当你将一个右值引用(如临时对象)作为参数来创建对象的构造函数,移动构造函数的参数是右值引用,移动构造函数的作用就是将右值引用所指向的对象的内存空间让给移动构造函数所要生成的对象,只是将一个对象的资源转让给另一个对象,相当于把这片内存改了个名字,原来是右值引用所指向的对象拥有的内存,变成了调用移动构造函数的对象的内存,并没有开辟新的内存。移动赋值运算符也是同理,将右值引用所指向的对象所拥有的内存空间转让给了其他对象,也没有开辟新的内存。什么是移动构造函数和移动赋值运算符?

2024-03-13 12:41:14 316

原创 重载和覆盖以及隐藏有什么区别?

重新定义,我们知道重新定义将隐藏方法,在派生类重新定义方法有点像重载,但是重载一般发生在一个类中而且不要求像重写一样参数列表和函数名都相同,而这里的重新定义发生在派生类中,此时派生类将隐藏基类的同名方法,而只使用派生类重新定义的同名方法。重写指的是派生类重写基类的方法,更改方法的行为,需要注意的是重写基类的方法要求派生类的方法必须与基类的方法具有完全相同的方法名以及参数列表,这时候如果通过派生类对象调用派生类方法的时候将会调用派生类的方法而不是基类的方法。重载和重写以及重新定义(隐藏)有什么区别?

2024-03-12 18:36:00 246

原创 介绍一下c++中的多态

在运行的时候才确定调用的是哪个函数,这种方式叫做动态连接,或者叫做晚绑定,实现的主要手段有重写(也叫覆盖),以及虚函数,比如基类中有一个方法使用了虚函数,基类的指针可以指向基类的对象也可以指向派生类的对象,在该方法使用了虚函数的情况下,要根据所指向的对象来调用方法,因此说运行的时候才确定调用的是哪个函数。是在编译时就确定了函数的类型和会调用哪个函数,这种方式叫做静态连接或者早绑定,静态多态主要实现手段有函数重载,运算符重载以及使用模板,这些都是在编译时就确定了函数的类型。

2024-03-12 16:46:20 166

原创 const的用法

而且我认为是形参的const指针和实参的const指针根本不是一个东西,可以看到输出的地址根本不一样,只是所指向的内存空间一样罢了,你在函数里面修改形参的指针与外面实参的指针无关。由上面const指针和被const修饰的指针可以知道,被const修饰的指针是可以改变所存储地址,但是不能改变所指向的内容的。如果形参是被const修饰的指针,那么这个指针是不允许修改所指向变量的值还是不允许修改指针本身所存储的地址?可见,被const修饰的形参指针是无法修改所指向的值的,那么可以修改指针所存储的变量地址吗?

2024-03-12 14:37:39 362

原创 static的用法和作用

如果定义的是静态类成员,比如静态成员变量和静态成员函数。其原因是,静态变量和全局变量都是存储在静态存储区(程序的数据段),而非栈区,局部变量存储在栈上,当函数调用结束时,栈上的内存将会被自动清理,所以局部变量会被消除。报错,说找不到静态函数fun的定义,所以我们说静态成员函数只有定义了它所在的文件可以调用,但是全局的函数non_static_fun是可以被调用的。在一个函数中定义静态局部变量的时候,该静态局部变量的生命周期将贯穿整个程序的运行期,而不会像局部变量一样函数运行结束的时候就被销毁。

2024-03-12 13:18:18 323

原创 c++ primer plus笔记 第十八章 探讨c++新标准

一般来说,构造函数,析构函数,赋值运算符,取地址运算符以及私有成员函数是派生了无法继承的,如果像继承基类的构造函数,则可以使用using来让派生类继承基类的所有构造函数,使用这种方法一般是因为基类的构造函数比较完整,用基类的构造函数就可以完成初始化,这样就可以省去重新定义一个和基类构造函数干相同事情的操作,即使用基类的构造函数却可以创造一个派生类的对象,我们一般说的构造函数无法继承的意思是说无法用基类的构造函数直接创建一个派生类的对象。而右值引用可以修改引用所指向的对象,右值引用一般用于移动语句。

2024-03-11 17:44:22 938

原创 c++ primer plus 笔记 第十六章 string类和标准模板库

如果只给string字符串分配string字符串大小的空间,当一个string字符串附加到另一个string字符串上,这个string字符串是以占用相邻内存的方式进行扩容的,相邻的内存不够存放这个附加的字符串的时候,就需要将拼接起来的这两个string字符串迁移去一个新的内存空间来存放,如果多次这样的分配,会使得效率就很低。即在unique_ptr中,交出所有权后消失是允许的,交出所有权后仍然存在在程序中这是不被允许的,即程序中存在被遗弃的智能指针,有被操作的风险。

2024-03-10 01:59:02 1061

原创 虚函数与纯虚函数有什么区别?

除了纯虚函数是派生类必须实现的,其他都是根据自己的需求看自己想不想重写该虚函数,在派生类需要有不同的行为,那么就需要重写该虚函数。而纯虚函数是必须要提供实现的。派生类一定要定义继承而来的虚函数嘛?

2024-03-09 11:45:49 384

空空如也

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

TA关注的人

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