ESP32上的面向对象(2)
ESP32上的面向对象(2)继承继承机制是面向对象程序设计中使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生的新类,称派生类(或子类),被继承的类称基类(或父类)。
类的权限一共有3种访问权限,分别是public、private和protected。
12345678910111213class DevBoard { public: int flash; DevBoard() { flash = 1024; ram = 256; cpuCore = 1; }; private: int ram; protected: int cpuCore;};
可以对这三种控制权限总结如下表:
访问权限
public
protected
private
对本类
可见
可见
可见
对子类
可见
可见
不可见
对外部调用方
可见
不可见
不可见
继承的格式1class 新类的名字:继承方式 继承类的名字{};
以上面的 DevBoard 为例:
1234 ...
ESP32上的面向对象(1)
ESP32上的面向对象(1)初识OOPOOP (Object Oriented Programming)是面向对象编程。其具有三大特性:
封装隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,便于使用,提高复用性和安全性。
继承子类可继承其父级类中的属性和方法,并可以添加新的属性和方法或者对部分属性和方法进行重写。继承增加了代码的可重用性。
多态子类继承了来自父级类中的属性和方法,并对其中部分方法进行重写。于是多个子类中虽然都具有同一个方法,但是这些子类实例化的对象调用这些相同的方法后却可以获得完全不同的结果,这种性质就是多态。多态性增强了软件的灵活性。
类的定义C++中使用关键字 class 来定义类,其基本形式如下:
1234567class 类名{ public: //公共的行为或属性 private: //私有的行为或属性};
private 表示该部分内容是私密的, 不能被外部所访问或调用, 只能被本类内部访问; 而 public 表示公开的属性和方法, 外界可以直接访问或者调用。一般来说类的属性成 ...
ESP32上的FreeRTOS学习
ESP32上的FreeRTOS学习(1)任务基本概念在任何时刻,只有一个任务得到运行,FreeRTOS调度器决定运行哪个任务。调度器会通过不断的启动、停止每一个任务,从而在宏观上看起来所有的任务都在同时执行。每个FreeRTOS任务都需要有自己的栈空间。当任务切换时,它的执行环境会被保存到该任务的栈空间中,这样当任务再次运行时,就能从栈中正确的恢复上次的运行环境。
任务状态FreeRTOS任务分为四种状态:
运行 (Running)当一个任务正在运行时,那么就说这个任务处于运行态,处于运行态的任务就是当前正在使用处理器的任务。如果使用的是单核处理器的话那么不管在任何时刻永远都只有一个任务处于运行态。
就绪 (Ready)该任务在就绪列表中, 就绪的任务已经具备执行的能力,只等待调度器进行调度,新创建的任务会初始化为就绪态。
阻塞 (Blocked)如果当前任务正在等待某个时序或外部中断,我们就说这个任务处于阻塞状态,该任务不在就绪列表中。包含任务被挂起、任务被延时、任务正在等待信号量、读写队列或者等待读写事件等。
挂起 (Suspended)当任务有较长的时间不 ...
链表
数据结构之链表初识链表链表是一种物理存储上非连续,数据元素的逻辑顺序通过链表中的指针链接次序,实现的一种线性存储结构。链表由一系列节点组成,节点在运行时动态生成,每个节点包括两个部分,一个是存储数据元素的数据域,另一个是存储下一个节点地址的指针域。
链表与数组区别
链表
数组
有相同数据类型的有续集,其中每个元素使用指针链接
相似数据类型的数据集合
链表不允许随机访问,元素只能被有序或顺序访问
数组元素可以使用数组索引随机访问
元素可能存储在内存的任意地方,链表创建一个指针指向相应的数据
数组的数据元素在内存中连续储存
链表的插入和删除操作非常快,时间为O(1)
插入和删除操作非常耗时,时间为O(n),因为元素的内存地址是连续和固定的
链表的内存分配是动态的,在运行时动态分配
数组的内存是静态分配的,在编译期间完成
链表的大小随着元素的插入或删除变化
数组的大小必须在数组的声明或初始化的时候指定
数组优缺点
优点
随机访问性比较强,可以通过下标进行快速定位。
查找速度快
缺点
插入和删除的效率低,需要移动其他元素。
可能会造成内存的浪费,因为内 ...