- 博客(70)
- 资源 (5)
- 收藏
- 关注
原创 C++【类的自动类型转换和强制类型转换】,总要了解一下
想让类的对象强制转换为基本数据类型,需要在类中添加类的转换函数。类的强制转换数据类型。
2022-12-01 20:23:20 700 2
原创 C++运算符重载【加号、左移、递增、指针、赋值、中括号、关系、函数调用】,统统载了
在c++对象的学习中,我们会使用到运算符重载,接下来大家一起学习一下吧!
2022-11-30 22:13:24 1059
原创 常函数、常对象、友元函数、友元类、友元成员函数,必看的C++知识点
用const修饰成员函数时,const修饰this指针的内存区域,成员函数内不能修改任何本类内的普通成员变量。用const修饰的创建的对象,常对象不允许调用对象成员与普通函数,但是被mutable修饰的成员变量除外。这里只是简单的介绍了一下,具体学习下面代码就可以更深入的了解。🎈常函数和常对象的使用,基础使用,看完加深理解!但是被mutable修饰的成员变量除外。1、友元(全局)函数。
2022-10-23 22:01:53 708
原创 单例设计、this指针,这些不容错过的C++知识点
this作为隐式参数传递给方法,每一个非静态成员方法中都有this指针。this指针用来指向调用成员函数的对象,谁调用方法,this就指向谁。2、在类的非静态成员方法返回当前对象时,用return *this。1、当形参与成员变量同名时,this指针用来区别。
2022-10-20 23:24:32 488
原创 FreeRTOS错误解决:Error:..\FreeRTOS\portable\RVDS\ARM_CM3\port.c,680
串口的抢占优先级未在5-15之间,将串口的抢占优先级修改即可解决。
2022-10-20 23:10:12 1919 3
原创 趁舍友上个厕所的时间,掌握步进电机驱动方式和电路
(1)MCU+开关管(元器件多,成本便宜,控制精度低,震动大,难以调试)(2)专用步进电机驱动芯片(电路结构简单、成本高、控制精度高、震动小、容易调试)上面讲了基本两种的步进电机驱动方式,第一种采用微控制器+开关管的控制,是一种比较简单的驱动方式,但是缺点同样明显第二种采用了专用的步进电机驱动芯片,这种控制方式比较优越。
2022-10-14 22:17:56 1466
原创 C++初始化列表、类对象作为类成员、静态成员,小知识点也不容错过哦
1、构造函数调用顺序:先调用其他类的成员,再调用本类成员(调用其他类的顺序由本类中声明顺序决定)1、采用初始化列表是为了对const类型成员进行初始化,一般也会使用初始化列表。2、对于引用类型的成员,也必须使用初始化列表。2、析构函数调用顺序:与构造函数调用顺序相反。
2022-10-14 20:48:05 403
原创 面试常问啥是深拷贝和浅拷贝,这篇看完你就懂了
💖所谓浅拷贝,就是赋值操作,将内容拷贝一份出来,但不被新建一个地址空间,即共享一个空间,如下图:将一个类p1拷贝一份p2,但是其指向的内存地址不变的,也就是说,只是将内容复制出来一份,但不会复制空间。💖所谓深拷贝就是将地址在堆区也拷贝出来一份,不再是简单的赋值拷贝,同样的如下图所示,当拷贝完成后,也同样在堆区在建一个地址存放。但当我们的成员有在堆开辟空间(即new)时,这个时候就要采用深拷贝,防止在析构函数时带来重复释放内存的问题。上面我们简单的阐述了一下深拷贝和浅拷贝的定义,下面详细解释一下。
2022-10-13 22:25:49 533
原创 C++构造函数和析构函数,趁现在,拿下它
(1)若定义了普通的构造函数(非拷贝构造函数),编译器不会自动生成无参构造函数,但是 会自动生成默认的拷贝构造函数。如果没有提供构造/析构函数和析构函数,编译器会自动提供一个无参的空实现的构造/析构函数。(2)若是仅定义了一个拷贝构造函数,那么编译器不会自动生成任何的构造函数。按参数分类:1、无参构造函数(默认)2、有参构造函数。构造函数特点:有可以多个参数,无返回值,可以重载。按类型分类:1、普通构造函数2、拷贝构造函数。析构函数特点:无参,无返回值,不可以重载。显示方式:1、显式调用2、隐式调用。
2022-10-12 22:21:42 328
原创 C++学习日记——封装和访问控制
(隐藏对象的属性和实现细节,仅对外部提供公共的访问方式)即将数据和方法封装在一起,数据被保护在内部,避免外部修改数据,通常使用private进行封装,即加入了权限限制,封装。protected(受保护,相似于private,但子类可以访问父类)private(私有)public(公共)
2022-09-29 23:43:47 306
原创 C++学习日记——面向对象的概述、类、初写一个学生类
尽可能模拟人类的思维方式去解决问题,使得软件的开发和解决问题过程更加接近人类认识世界、解决问题的方式;核心是对象,思想由一系列对象组成。(1)面向过程:1、往盆里接水2、放入衣服3、加入洗衣粉4、浸泡一会5、搓一搓6、取出过水7、拧干衣服8、晒衣服。类:将抽象转换为用户定义的类型的工具,将数据表示和操纵数据的方法整合在一起的包。(2)面向对象:1、把衣服放入洗衣机2、加入洗衣粉3、开启洗衣机4、晒衣服。描述世界的事物:1、属性(描述信息)2、行为(能够干什么)c++使用类用关键字class。
2022-09-28 21:57:04 398
原创 C++学习日记——using生命和using编译指令
🐱🏍using编译指令:让整个名称空间中的名称可用(using namespace std;using声明和using编译指令:都是简化对名称空间中名称的使用。🐱🏍using声明:使特定的标识符可用。
2022-09-28 21:39:16 382
原创 吃个宵夜的时间,脑子里进点三相交流无刷电机驱动原理不过分吧
MCU+pre_drive+整流桥(三极管、MOS、IGBT)专用的无刷电机驱动芯片+整流桥(使用的于小功率场合)专用的FOC算法芯片+整流桥(适用于小功率场合,高精度控制)
2022-09-27 23:06:50 4102
原创 C++学习日记——作用域运算符、名称空间
注意:如果定义了一个同名的全局变量和局部变量,比如·下面的变量num,那么在主函数中调用则考虑。3、一个名称空间中的名称不会和另一个名称空间中的同名名称发生冲突。4、允许程序使用名称空间内声明的东西。2、可以在程序中创建不同的名称空间。1、可以更好地控制名称的作用域。3、名称空间作用域符。
2022-09-27 22:26:25 546
原创 C++学习日记——定位new运算符
动态存储持续性:动态内存由new和delete运算符控制,而不是由作用域和链接规则控制。void* operator delete[](void*)//运算符重载。2、new失败后返回空指针,引发异常 std::bad_alloc。4、定位new运算符 包含new头文件。动态内存与自动内存不同,不是LIFO。1、使用new运算符进行初始化。
2022-09-26 22:29:32 969
原创 C++学习日记——存储持续性、作用域、链接性
3、动态存储:利用new和delete进行操作,由程序员自行分配和释放,在堆里操作。2、静态存储:(1)在函数外进行声明(2)在函数内用static声明。a:外部链接性:必须在代码块外部声明,称之为全局变量,外部变量。在函数定义和函数参数声明的变量,作用域是局部作用域、无链接性。b:内部链接性:必须在代码块外部声明,并且用static修饰。1、自动存储:系统自行分配内存和释放内存,在栈里面操作。2、堆区:程序员自由分配和释放的,new和delete。c:无链接性:在函数内部声明,并且用static修饰。
2022-09-25 21:57:44 272
原创 C++学习日记——extern C、C++与C混合开发、_cplusplus
被extern "C"修饰的代码会按照C语言的方式去编译。__cplusplus宏声明是否为C++用途:用于C和C++进行混合开发。
2022-09-24 23:59:26 242
原创 吃个午饭的时间,学“废”单相交流感应电机驱动原理
单相交流感应电机有三种典型的驱动方式:一种是采用最简单粗暴的物理开关驱动方式;一种是串联电抗的驱动方式,可以串联电容或者电感;一种是采用电机调速器的方法,利用可控硅的方式搭建驱动电路。
2022-09-23 23:27:56 1838
原创 C++学习日记——默认参数、函数重载
在给函数形参加上了默认值,但在函数调用时给实参重新赋值,那么就会忽略默认值,例如,int func(int a,int b=5){}1、如果一个函数的一个形参有了默认值,那么后面所有形参都应该赋予默认值,即默认值只能从右往左赋值。重载:函数或方法拥有相同的的名称,但参数列表不相同的情况,即同名不同参的函数或方法叫做重载。函数重载:编译器采用了一种技术,name decoration(名称修饰)突出:int getsum(int a,int) 占位参数。调用时,func(4,10),那么会使用10而非5;
2022-09-23 23:02:56 318
原创 吃个早餐的时间,看懂直流有刷电机驱动原理
在日常生活中,如果是大功率比如上千瓦几百瓦等电机驱动一般采用接触器来控制,其他小功率的驱动利用H桥注:以上照片均来源于网络,侵删!
2022-09-22 23:28:22 2674
原创 C++学习日记——引用和结构体、引用作为函数返回值
a.如果数据比较小,如内置的基本数据集结构或小结构体,可以用按值传递。c.如果数据比较大,如大型结构体,使用const指针或const引用。一、对使用传递的值而不做修改的函数(指只传值不对外部原先数值修改)不使用局部变量作为引用的返回对象,避免函数结束时返回不再存在的内存。2、传递了引用而不是整个数据,没有了副本拷贝,加快了运行速度。b.如果数据是数组,用指针,指针声明为const类型的指针。d.如果数据是类对象,使用const引用。c.如果数据是结构,使用引用或指针。d.如果数据是类对象,使用引用。
2022-09-22 22:53:17 478
原创 C++学习日记——引用、引用作为函数参数、常量引用
作为函数的参数,将引用变量作为参数,将直接使用其数据,而不是其副本(拷贝)2、可以引用const和非const数据,否则只能引用非const数据。普通变量属于可修改的左值,const修饰的值属于不可修改的左值。语法:typename &ref =valname;非左值,字面常量,包含多项的表达式等。1、引用必须引用合法的内存空间。3、引用一旦初始化,不能改变引用。例如:int num=10;非常量引用的值必须为左值,可以被引用的数据对象。引用和引用作为函数参数。引用和引用作为函数参数。
2022-09-21 22:48:59 1238
原创 C++学习日记——宏函数和内联函数
1、内联函数是函数,在编译阶段会进行类型检测,比较安全。本质上内联函数也是一个普通的函数,解决了宏定义的缺陷。使用宏定义定义出的函数,并不是真正意义上的函数。内联函数必须在声明和定义前都加上inline。不是函数,少了函数调用的开销,提高运行效率。每个宏函数位置都会被展开,容易造成代码膨胀。3、在编译阶段展开代码,提高运行效率·使用场景:频繁调用的短小的函数。可以提高代码的可读性和复用性。1、存在任何情况的循环语句。2、存在过多的条件判断语句。使用宏函数存在一定的缺陷。4、对函数进行取地址操作。
2022-09-19 22:36:19 397
原创 C++学习日记——字符串转换函数
字符串转数字,带两个参数(const char*str,char**ptr),若ptr指针不为空,则会将转换数字后面其余字符地址保存在该ptr上。:字符串转换数字,遇到非数字或结束符停止,成功返回转换数字,不成功返回0。:字符串转化为long long类型数据。:字符串转化为double类型数据。:字符串转化为long类型数据。
2022-09-13 22:39:05 807
原创 C++学习日记——字符串切割函数
后面传入空指针即可,每次调用成功返回切割出来的片段的指针。返回值:切割完字符串的首地址。第一次切割时必须传入源字符串。*c:需要切割的字符。
2022-09-11 21:37:20 314
原创 一周年创作纪念日,冲吧少年郎
博客的收获上,我从当初那个只有0粉到现在357个粉,从0访问到现在近8万的访问,从无穷排名到1.3w排名,从0点赞、0评论、0收藏到555点赞、512评论、1894收藏,从0篇博文到38篇博文,csdn陪我成长的同时也记录着我的点点滴滴,在这期间受益匪浅,我很感谢博客,也很感谢自己,加油少年郎!以后能够创作出更多有质量的文章,帮助到更多的人,也希望自己能够面试到一份心仪的工作,毕竟即将升入大四了。冲吧少年郎,未来可期!...
2022-07-23 11:16:28 326 3
原创 跟着官方学电机,BLDC两种控制策略,学到即赚到
目录一、控制BLDC速度转动1、方法一:构建一个控制器控制电压的大小2、方法二:使用PWM3、下面就是两种pwm的构建方法:首先,先建立一个霍尔传感器获取电机的角位置和速度,将转子内的区域划分为6个扇区,霍尔传感器不会提供转子的具体位置信息,但是可以检测转子何时从一个扇区转到另一个扇区,而且实际上只要知道位置信息,就可以对电机进行换向,这个时候又不知道换A/B/C的哪两个,因此需要采用换向逻辑,通过此逻辑确定三相逆变器开关,如下图2 换向逻辑与三相逆变器的相互作用首先是换向逻辑中的A、B、C分别代表A相,B
2022-06-28 16:16:51 7595 3
原创 Linux学习笔记(10)----静态库与共享库
目录静态库的创建一、编译一个库源码tsys.c二、编译生成目标文件三、通过工具四、编辑代码调用test1.c五、编译六、运行共享库的创建一、编辑两个c文件,拿来调用二、编译生成两个目标文件三、生成一个共享库四、编辑一个主函数c文件testlib.c五、编译主函数c文件六、未识别+如何找到共享库七、运行静态库的创建一、编译一个库源码tsys.c#include<stdio.h>#include<math.h&g
2022-05-23 20:36:40 365 1
原创 Linux学习笔记(9)----标准io编程2
目录一、标准io编程实例1二、标准io编程实例2三、标准io编程实例3四、标准io编程实例4五、标准io编程实例5六、标准io编程实例6一、标准io编程实例1#include<stdio.h>//打开或创建一个流文件,将数组a写到该流文件中去int main(int argc,char *argv[]){ int a[]={1,2,3,11,5,6,7,8}; FILE *fp; fp=fopen("456.txt","w");...
2022-05-22 10:40:11 363
原创 Linux学习笔记(8)----标准io编程1
目录一、标准io编程实例1二、标准io编程实例2三、标准io编程实例3四、标准io编程实例4一、标准io编程实例1#include<stdio.h>int main(){FILE *fp;if((fp=fopen("abc1.txt","w"))==NULL)//可以换成 fp=stdout;{perror("open");return -1;}fputc('a',fp);fputc('\n',fp);return ;}二、标准i
2022-05-13 10:59:37 289
原创 Linux学习笔记(7)----makefile实例
目录一、makefile实例1二、makefile实例2三、makefile实例3四、预定义变量五、常见自动变量和环境变量六、使用注意事项一、makefile实例1(1)add.c:int add(a,b){ return a+b;}int sub(a,b){ return a-b;}int mul(a,b){ return a*b;}(2)suanshu.c:#include"stdio.h"int main()...
2022-05-12 11:52:07 1016
原创 Linux学习笔记(6)----gcc与gdb使用
目录一、gcc学习二、gdb调试器一、gcc学习(1)GNU CC(简称gcc)是GNU项目中符合ANSI C标准的编译系统能够编译用C、C++、和Object C等语言编写的程序;gcc不仅功能强大,而且可以编译如C++\C\0bject C\Java等(2)gcc aaa.c -o aaa 生成目标文件aaa 执行./aaa 即可完成编译输出(3)gcc -S aaa.c -o aaa 生成目标汇编文件(4)gcc -E aaa.c -o aaa 生成目标预处理文件(5)g
2022-05-11 19:33:57 379
原创 Linux学习笔记(5)----脚本编写实例学习
目录一、编写脚本二、补充说明一、脚本基础实例学习(1)#!/bin/bashnum=`find /home/linux/$1 -name $2|cut -d"/" -f2|sort -n -u`for i in $numdo echo -n "$i " cat /home/linux/$1.txt |sed -n "${i}p" name=`cat /home/linux/$1.txt |sed -n "${i}p"` echo "想批改吗?y...
2022-05-10 18:31:10 266
基于stc89c52的智能小车综合设计.zip
2021-08-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人