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

网站备案需要关闭工业物联网平台

网站备案需要关闭,工业物联网平台,把网站提交谷歌,中卫网站推广外包服务引入 对象与对象之间的通信有多个方式,如果我们要提供一种对象之间的通信机制。这种机制,要能够给两个不同对象中的函数建立映射关系,前者被调用时后者也能被自动调用。 再深入一些,两个对象如果都互相不知道对方的存在&#xff…

引入

对象与对象之间的通信有多个方式,如果我们要提供一种对象之间的通信机制。这种机制,要能够给两个不同对象中的函数建立映射关系,前者被调用时后者也能被自动调用。
再深入一些,两个对象如果都互相不知道对方的存在,仍然可以建立联系。甚至一对一的映射可以扩展到多对多,具体对象之间的映射可以扩展到抽象概念之间。这样子如何实现呢?

观察者模式

在我之前就介绍过设计模式之观察者模式,它就可以实现上述引入所讲的,两个对象如果都互相不知道对方的存在,仍然可以建立联系。归结到底就是回调函数+映射表的方式实现该思想。

qt的信号-槽

信号-槽 是Qt自定义的一种通信机制,它不同于标准C/C++ 语言,它的本质就是一种观察者模式的具体实现

信号-槽的使用方法,是在普通的函数声明之前,加上signal、slot标记,然后通过connect函数把信号与槽 连接起来。后续只要调用 信号函数,就可以触发连接好的信号或槽函数。
在这里插入图片描述
连接的时候,前面的是发送者,后面的是接收者。信号与信号也可以连接,这种情况把接收者信号看做槽即可。

信号与槽的分类

信号-槽要分成两种来看待,一种是同一个线程内的信号-槽,另一种是跨线程的信号-槽。

  • 同一个线程内的信号-槽,就相当于函数调用,和前面的观察者模式相似,只不过信号-槽稍微有些性能损耗(因为需要查找映射表,这也是观察者解耦的代价)。

  • 跨线程的信号-槽,在信号触发时,发送者线程将槽函数的调用转化成了一次“调用事件”,放入事件循环中。接收者线程执行到下一次事件处理时,处理“调用事件”,调用相应的函数。

信号与槽的实现 - 元对象编译器moc

信号-槽的实现,借助一个工具:元对象编译器MOC(Meta Object Compiler)。

这个工具被集成在了Qt的编译工具链qmake中,在开始编译Qt工程时,会先去执行MOC,从代码中解析signals、slot、emit等等这些标准C/C++不存在的关键字,以及处理Q_OBJECT、Q_PROPERTY、Q_INVOKABLE等相关的宏,生成一个moc_xxx.cpp的C++文件。比如信号函数只要声明、不需要自己写实现,就是在这个moc_xxx.cpp文件中,自动生成的。MOC之后就是常规的C/C++编译、链接流程了。

moc的本质-反射机制

MOC的本质,其实是一个反射器。标准C++没有反射功能(将来会有),所以Qt用moc实现了反射功能。

什么叫反射呢? 简单来说,就是运行过程中,获取对象的构造函数、成员函数、成员变量。

举个例子来说明,有下面这样一个类声明:

class Tom {
public:Tom() {}const std::string & getName() const{return m_name;}void setName(const std::string &name) {m_name = name;}
private:std::string m_name;
};

类的使用者,看不到类的声明,头文件都拿不到,不能直接调用类的构造函数、成员函数。

从配置文件拿到了一段字符串“Tom”,就要创建一个Tom类的对象实例。然后又拿到一段“setName”的字符串,就要去调用Tom的setName函数。

面对这种需求,就需要把Tom类的构造函数、成员函数等信息存储起来,还要能够被调用到。

这些信息就是 “元信息”,使用者通过“元信息”就可以“使用这个类”。这便是反射了。

设计模式中的“工厂模式”,就是一个典型的反射案例。不过工厂模式只解决了构造函数的调用,没有成员函数、成员变量等信息。

参考

学习反射看这一篇就够了

如何优雅的实现C++编译期静态反射

http://www.yayakq.cn/news/666582/

相关文章:

  • git 网站开发应用公装设计网站
  • 网站运营成功案例东莞网络企业推广
  • 网站建设 蔬菜配送公司免费取名
  • 网站建设用户量分析普通网站建设
  • 网站正能量大全买卖链接网站
  • 盘锦门户网站制作网页设计与制作课程大纲
  • 代理浏览网站制作公司网站 黑龙江
  • 网站建设公司专业网站开发需求北仑网站网页建设
  • 广西住房城乡建设厅网站首页海外网深一度
  • 网站开发代码用什么软件广东建设厅官网证件查询
  • 常德地区网站建设做企业宣传网站
  • 网络营销推广网站收录wordpress oyester
  • 用dw制作网站模板网站提交网址
  • 阿里巴巴的网站应该怎么做公司想做个网站怎么办
  • 有自己网站做淘宝客赚钱东莞人才市场现场招聘信息
  • 合肥网站建设电话wordpress自定义栏目是什么
  • 手机网站图片自适应wordpress中添加登陆页面跳转
  • 企业网站的建设多少钱做国外网站关键词用写
  • 我想学做网站淮南网吧
  • 设计网站首页步骤wordpress 4.8教程
  • 兰州正规seo整站优化php 怎么做网站超链接
  • 网站建设举措邯郸最新工程项目公示
  • 网页设计师的发展前景青岛seo精灵
  • 精品网站建设平台单页面淘宝客网站
  • 网站用什么做关键词怎么做网络游戏
  • 舟山论坛网站建设wordpress添加导航首页
  • 网站建设工作基本流程网站哪个公司做的比较好
  • 手机网站建设必要性天津网站专业制作
  • 企业网站设计建设服务器绿色调网站
  • 什么编程语言做网站安全网站怎么才能上线