当前位置: 首页 > wzjs >正文

地图网站设计上海好的网站设计公司有哪些

地图网站设计,上海好的网站设计公司有哪些,怎么选择镇江网站建设,自定义文章类型的分类wordpress1. 什么是虚函数? 虚函数(virtual)是C里实现“多态”的关键机制。 在基类中声明虚函数,在子类中可以**覆盖(override)**它们。通过基类指针/引用操作时,自动调用实际对象(子类&…

1. 什么是虚函数?

虚函数(virtual)是C++里实现“多态”的关键机制。

  • 在基类中声明虚函数,在子类中可以**覆盖(override)**它们。
  • 通过基类指针/引用操作时,自动调用实际对象(子类)的实现

例如:

class TComProtocolBase {
public:virtual bool SetParam(int addr, int value) = 0; // 纯虚函数virtual void StartMonitor() = 0;// ...
};
  • 这是一个抽象接口/基类(不能直接new出来,只能当指针/引用用)。
  • 子类继承时必须实现这些函数。

2. 这样设计有什么用?

(1)面向接口编程,解耦各层逻辑

  • 上层代码可以依赖TComProtocolBase接口,而不关心具体用的哪个协议(比如Modbus、CAN、自定义协议等)。
  • 后续可以新增不同的协议实现,只需要继承基类,不用改动上层代码

(2)多协议/多硬件扩展容易

  • 比如设备A用Modbus,设备B用自定义协议,设备C用CAN。
  • 只要写不同的子类,分别实现这些虚函数,上层只用一套调用方式,大大增强可维护性和可移植性。

(3)便于单元测试和Mock

  • 写测试时,可以很方便写一个FakeProtocol继承基类做“假装通信”,不用真连硬件。

(4)团队分工更明确

  • 通信协议开发和业务开发可以分开,彼此只需遵守接口约定,降低沟通成本。

3. 举个例子:

// 基类:通信协议的“接口标准”
class TComProtocolBase {
public:virtual bool SetParam(int addr, int value) = 0;virtual void StartMonitor() = 0;// ... 还有其它命令接口
};// 子类1:实际实现一种协议
class TComProtocolV1 : public TComProtocolBase {
public:bool SetParam(int addr, int value) override {// 协议1的实现}void StartMonitor() override { /* ... */ }
};// 子类2:实现另一种协议
class TComProtocolV2 : public TComProtocolBase {
public:bool SetParam(int addr, int value) override {// 协议2的实现}void StartMonitor() override { /* ... */ }
};

使用时:

TComProtocolBase* protocol = new TComProtocolV1();
protocol->SetParam(0x100, 42);  // 实际调用的是V1的实现delete protocol;

后续切换成V2协议实现,只需替换new对象的类型即可,调用方式不用变。


4. 为什么不是直接写死?

  • 如果直接写死协议细节,后续想支持多协议、多硬件,需要全改一遍业务层,非常痛苦。
  • 用虚函数(接口/抽象基类),可以让业务层面向抽象而不是实现,极大增强代码的灵活性。

5. 这也是现代C++、C#、Java等主流语言面向对象的精髓

  • 编程面向接口,而不是面向实现
  • 易于扩展,易于维护,支持插件化和多协议共存。

小结

“基类定义虚函数接口,子类实现具体协议,业务层只需依赖接口即可;后续新增/切换协议无需大改动,维护和扩展都很方便。”

http://www.dtcms.com/wzjs/590734.html

相关文章:

  • php 网站建设 教学wordpress设置导航高度
  • 电子商务网站设计成功的要素做设计有哪些地图网站
  • 北京网站设计公司招聘信息怎么个人做网站
  • 网站如何301有什么做C语言的网站
  • 新乡专业做网站的公司哪家好全国最好的广告公司加盟
  • 网站域名百度云网站环境建设网站开发工程师大学
  • 杭州微信网站制作网店seo
  • 青岛广新信建设咨询公司网站深圳那个网站建设
  • 网站可视化后台珠宝设计网站
  • 怎么样免费建网站网站开发与软件开发的区别
  • wordpress网站如何迁移个人网站备案icp
  • 手机网站模板 psd官方网站建设 磐石网络知名
  • 开发一个小程序需要多少钱seo推广渠道有哪些
  • 网站开发开发需求东莞百度代做网站联系方式
  • 做外贸英文网站泰安工作招聘
  • 网站建设的具体流程有效的网络推广
  • 境外企业网站推广什么网站可做浏览器首页
  • 个人摄影网站制作中铁建设集团有限公司下属公司
  • 济宁做网站有哪几家wordpress onedrive
  • 天津微网站建设广州室内设计公司排名
  • 网站自响应删负面的网站
  • 深圳做网站公司有那些网站后台分类
  • 用asp做旅游网站上海名企
  • 网站规划设计报告前端开发软件有哪些
  • 网站做tips广西省河池建设局网站
  • 网站设置反爬虫的主要原因做洗化的网站
  • 古玩网站源码wordpress门户网站模板下载
  • 苏州市高新区建设局网站wordpress统计访客
  • 好看的手机端网站开发页面谷城网站建设
  • 西红门网站建设各城市首轮感染高峰期预测