c/c++
c/c++
铁链小鸟酱
这个作者很懒,什么都没留下…
展开
-
c++之 钻石继承
概念两个派生类同时继承一个基类,然后又有某一个类继承两个派生类。钻石继承的问题1、产生二义性;2、继承的数据只需要一份就可以了。砖石继承会同时继承两个数据。如何解决遇到的问题继承前加上virtual关键字,变为虚继承class base{public: int age;}class son1 : virtual public parent{};//继承前加上virtual关键字class son2 : virtual public parent{};//继承前加上virtual关键原创 2021-09-10 11:46:58 · 526 阅读 · 0 评论 -
纯虚函数和抽象类
概念在多态中,通常父类中虚函数的实现是毫无意义的,主要都是调用子类重写内容。因此我们要将虚函数改为纯虚函数。纯虚函数的语法virtual 返回类型 函数名 (参数列表)= 0;当类中有了纯虚函数,这个类也称为抽象函数。抽象类的特点无法实例化对象;子类必须重写抽象类中的纯虚函数,否者也属于抽象类。...原创 2021-09-10 11:32:14 · 106 阅读 · 0 评论 -
c++学习之 多态
概念1、静态多态:编译阶段就已经给函数分配好了地址2、动态多态:程序在运行期间给函数分配地址规则1、有继承关系;2、子类重写父类中的虚构函数;3、父类指针或引用指向子类的对象;4、父类中使用virtual关键字修饰函数;...原创 2021-09-10 09:55:53 · 103 阅读 · 0 评论 -
c++核心编程
C++核心编程本阶段主要针对C++面向对象编程技术做详细讲解,探讨C++中的核心和精髓。1 内存分区模型C++程序在执行时,将内存大方向划分为4个区域代码区:存放函数体的二进制代码,由操作系统进行管理的全局区:存放全局变量和静态变量以及常量栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收内存四区意义:不同区域存放的数据,赋予不同的生命周期, 给我们更大的灵活编程1.1 程序运行前 在程序编译后,生成了ex原创 2021-09-03 19:06:52 · 157 阅读 · 0 评论 -
PID控制算法
PID控制算法位式PD算法增量式PID算法位式PD算法公式代码:float PD_control(const float *P_value,const float *D_value,const float *set_value,const float *mea_value){ static float current_error=0;//定义当前误差 static float last_error=0;//定义上一次误差 float u=0;//定义输出量 current_error原创 2021-08-30 13:12:07 · 120 阅读 · 0 评论 -
volatile的作用
看大佬见解:链接: https://blog.csdn.net/weixin_41656968/article/details/80958973.原创 2021-08-29 19:58:59 · 54 阅读 · 0 评论 -
const和#define的不同之处
#define定义的变量,不能用指针指向该变量。const修饰的变量可以使用指针指向该变量;define可以定义一些简单的函数,只起替换的作用,const不可以定义函数;const修饰的变量,只在该文本内有效,想要在其他文件内访问该变量,需要在变量前加上extern,这点static修饰作用有点像;define定义的变量没有数据类型,是一个立即数;define所定义的宏变量在预处理阶段的时候进行替换;...原创 2021-08-29 18:00:13 · 93 阅读 · 0 评论 -
const的用法
使用const定义后的变量需要初始化,以后不能修改;使用const修饰的形参,在函数内,函数不能修改形参的内容;const修饰类名变量,只能对该变量进行读操作不能进行写操作;原创 2021-08-29 17:48:47 · 60 阅读 · 0 评论 -
static的用法
static修饰局部变量:局部变量为动态存储,即指令执行到定义处才分配内存。使其变为静态存储方式(静态数据区),那么这个局部变量在函数执行完成之后不会被释放,而是继续保留在内存中;static修饰全局变量:编译时就分配了内存,该变量只在文本内部有效;static修饰函数:对函数的连接方式产生影响,使得函数只在本文件内部有效。使用静态函数的好处是,不用担心与其他文件的同名函数产生干扰,另外也是对函数本身的一种保护机制;static类成员变量:表示这个成员为全类所共有,对类的所有对象只有一份拷贝,可以借.原创 2021-08-29 17:43:21 · 142 阅读 · 0 评论 -
struct和class的区别
c++是完全兼容c的;struct可以做的事,class也可以做;c++中,struct也可以有构造函数和析构函数;c++中struct访问的是public,class可以有private和protect原创 2021-08-29 17:27:29 · 38 阅读 · 0 评论 -
c++中函数的重载
函数名相同,但是函数的参数不同(形参的个数、类型或顺序);编译器会根据参数的不同来选择函数,这个也叫做编译时的多态原创 2021-08-29 16:18:33 · 44 阅读 · 0 评论 -
extern”C” 的作用
C++代码调用C语言代码;在C++的头文件中使用;被extern "C"修饰的变量和函数是按照C语言方式进行编译和链接的;具体例子如下:#ifndef __INCvxWorksh /*防止该头文件被重复引用*/#define __INCvxWorksh#ifdef __cplusplus //告诉编译器,这部分代码按C语言的格式进行编译,而不是C++的extern "C"{#endif/*…*/#ifdef __cplusplus}#end.原创 2021-08-29 16:13:13 · 272 阅读 · 0 评论 -
内存的分配方式
从静态存储区域分配内存,编译时就已经分配好了,程序运行期间都存在,例如静态变量全局变量;从栈上分配内存。在执行函数时,函数的局部变量的内存在栈上创建,函数执行完之后,内存自动释放。但是栈区分配的内存有限;从堆上分配内存。使用malloc或new申请内存,使用free和delete释放内存。...原创 2021-08-29 15:40:05 · 66 阅读 · 0 评论 -
指针与引用的相同和区别
指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名;指针是一个实体,而引用仅是个别名;指针和引用的自增(++)运算意义不一样,指针是对内存地址的自增,引用是对值的自增;引用一旦初始化后就不可以更改,相当一个指针常量,指针可变;引用不能为空,指针可以为空;引用没有const,指针有const;引用可以使用常量引用,即const int &b=1;...原创 2021-08-29 15:30:20 · 226 阅读 · 0 评论 -
new和malloc的区别
new、delete是C++中独有的操作符,malloc和free是C/C++中的标准库函数;使用new创建对象在分配内存的时候会自动调用构造函数,同时也可以完成对对象的初始化。同理要记得delete也能自动调用析构函数。new返回的是指针类型,会自动计算申请内存的大小,malloc返回的是void *指针类型,需要使用强转,将其转换为特定的类型;c++允许重载new/delete操作符;new内存分配失败时,会抛出bad_alloc异常。malloc分配内存失败时返回NULL;new操作符从自.转载 2021-08-29 15:00:35 · 139 阅读 · 0 评论