网站大量收购闲置独家精品文档,联系QQ:2885784924

C 消息连接的一种系统方法.pdf

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C 消息连接的一种系统方法

C++消息连接的一种系统方法 用过C++进行过面向对象程序设计的用户都知道,程序中的对象很少单独存在。不考虑对象 间的相互作用几乎是不可能的。所以,标识对象间的关系或建立对象间的消息连接是面向对 象程序设计的一项重要任务。本文着重从C++程序设计的角度,提出一种建立对象间消息连 接的实用方法。如果你想详细了解面向对象程序设计技术,请参阅有关专著。大家都知道对 象是数据和方法的封装体。在C++中,它们分别表现为数据成员和成员函数。程序设计者通 过执行对象的各种方法,来改变对象的状态(即改变对象的属性数据)。从而使该对象发生 某些“事件”。当一对象发生某事件时,它通常需向其它相关对象发送“消息”,请求它们 作出一些处理。 这时,发生事件并向其它对象请求处理的对象被称为“事件对象”,而处 理事件的对象被称为“回调对象”。回调对象对事件的处理称为“回调函数”。在C++中, 这一过程相当于:当事件对象发生事件时,调用回调对象的某些成员函数。通常的作法是回 调对象向事件对象传递对象指针。但这种方法不通用。为了减少程序设计的工作量,本文提 出一种建立对象间消息连接的系统方法。它的思路是:将“事件发生→请求处理→执行处 理”这一过程抽象成一个“回调”(CallBack)类。通过继承,用户可以轻松获取建立对象 间消息连接的机制。 一、回调类的数据结构及其成员函数 本文提出的CallBack类支持三种回调函数。它们是:回调对象中的成员函数,属 于回调类的静态成员函数和普通的C函数。CallBackle类中包含一回调函数表 callBackList。它用于记录事件名称,指向回调函数及回调对象的指针。该表的每一个节点 为一个事件记录EventRecord。每个事件记录包含三个域:事件名指针eventName,指向回 调对象的指针pointerToCBO,指向回调函数的指针pointerToCBF或pointerToCBSF(其中, pointerToCBF指向回调对象的成员函数,pointerToCBSF指向回调类的静态成员函数或普通 函数。它们同处于一共用体内)。CallBack类所提供的回调机制是这样的:在事件对象上注 册回调对象中的回调函数;当事件发生时,事件对象在其回调表中检索并执行回调函数。从 而使二者的消息连接得以建立。(关于该类的具体实现,请参阅文后所附的程序清单) 回调 对象 事件对象 事件名回调对象指针回调函数指针 “event” pointerCBO pointerToCBF或pointerTOCBSF AddCallBack: 注册事件名和指向回调函数,回调对象的指针 CallCallBack: 在回调表中,检索注册在指定事件上回调函数并调用它们 事件发生时,调用CallCallBack函数 对事件event进行处理的成员函数 从CallBack类继承的回调表callBackList, 成员函数AddCallBack和 CallCallBack。 当回调函数为静态成员函数或普通C函数时, pointerToCBO为NULL。 事件名是回调表callBackLis中的检索关键字。 回调对象中其它成员函数 CallBack类的成员函数AddCallBack用来将回调函数注册到事件对象的回调表中。 它有两个重载版本: void CallBack::AddCallBack(char *event,CallBackFunction cbf,CallBack *p); void CallBack::AddCallBack(char *event,CallBackStaticFunction cbsf); 其中,第一个AddCallBack用来将某回调对象的成员函数注册到事件对象的回调表 中。第二个AddCallBack用来将或某回调类的静态成员函数注册到事件对象的回调表中。在 上参数表中,event是指向事件名字符串的指针,p是指向回调对象的指针,cbf和cbsf分 别是指向成员函数及静态成员函数(或普通函数)的指针。当回调函数来自某回调对象 SomeObject时,传递成员函数指针应采用如下格式:(CallBackFunction) SomeObject::MemberFunctionName; 传递SomeObject类的某静态成员函数指针应采用格 式:(CallBackStaticFunction) So

文档评论(0)

jgx3536 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档