class Animal {
public:
// 构造函数
Animal(const std::string& nickname) : nickname_(nickname) { }
// 让类外部可以访问到nickname_
const std::string& nickname() const { return nickname_; }
// 行为1:喂食
virtual bool Feed(const std::string& food) {
return false;
}
// 行为2:叫唤
virtual void Shout() {
}
protected:
// 数据
const std::string nickname_; // 昵称
private:
}; 在声明体内,可以定义方法和数据,一般将数据放在private和protected下,以达到封装数据的目地。
class Dog : public Animal {
public:
Dog(std::string& nickname) : Animal(nickname) { }
bool Feed(const std::string& food) override {
if (food == "骨头") {
Serial.printf("%s:吃了一根骨头。\n", nickname_.c_str());
return true;
}
return false;
}
void Shout() override {
Serial.printf("%s:汪~汪~汪~。\n", nickname_.c_str());
}
// 看门
void WatchDoor() {
}
} 类Dog继承类Animal,然后重写了Feed和Shout方法(加override修饰),使用代码:
class Cat : public Animal {
public:
Cat(std::string& nickname) : Animal(nickname) { }
bool Feed(const std::string& food) override {
if (food == "鱼") {
Serial.printf("%s:吃了一条鱼。\n", nickname_.c_str());
return true;
}
Serial.printf("%s:猫要吃鱼。\n", nickname_.c_str());
return false;
}
void Shout() override {
Serial.printf("%s:喵~喵~喵~。\n", nickname_.c_str());
}
// 抓鱼
void CatchFish() {
}
} 多态实现代码:
void feed(Animal *animal) {
animal->Feed("骨头");
} 当调用feed函数时,传入Dog实例指针和Cat实例指针,函数的行为就是多态。
舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。在高档遥控玩具,如飞机、潜艇模型,遥控机器人中已经得到了普遍应用。
本讲主要介绍VSCode Arduino开发环境的搭建,及与Arduino IDE开发环境的比较。
本文主要讲解WebServer库如何来处理表单请求。
WebServer是非常常用的一个功能,在设备上使用该功能可以直接通过浏览器访问和操作设备。
在 C++20 中,标准库引入了 std::format 功能,这是一个强大的字符串格式化工具,它提供了类似 Python 的格式化语法,使得字符串格式化变得更加简单和直观。
Arduino-ESP32与ESP-IDF的版本对应表。
Arduino-ESP32提供了多种文件系统解决方案,本文将深入解析SPIFFS、LittleFS和SD卡三种主流存储方案,帮助你做出最佳选择。
ESP32-P4-WIFI6-DEV-KIT是一款微雪(Waveshare)设计的基于 ESP32-P4 的多媒体开发板,并集成 ESP32-C6,支持 Wi-Fi 6 和 BLE 5 无线连接。它提供丰富的人机交互接口,包括 MIPI-CSI (集成图像信号处理器 ISP)、MIPI-DSI、SPI、I2S、I2C、LED PWM、MCPWM、RMT、ADC、UART 和 TWAI 等。
ESP-Hosted 解决方案提供了将 ESP 板用作 Wi-Fi 和 Bluetooth/BLE 连接的通信处理器的方法。
ESP-Hosted 提供了一种将ESP芯片和模组用作通信协处理器的解决方案,该解决方案为主机微处理器或微控制器提供无线连接,使主机能够与其他设备通信。简单来说为网卡方案。