摘要: //TestDelegate.cpp:定义控制台应用程序的入口点。//#include"stdafx.h"typedefunsignedlonggulong;typedefchargchar;typedefvoid*gpointer;typedeflongGObject;void*g_lpObject=0;classObject{public:Object(){};virtual~Object(){};};classBaseObject:virtualpublicObject{public:BaseObject();virtual~BaseObject();/*创建对象并绑 阅读全文
posted @ 2013-05-03 22:11 日月王 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 公司的项目里有用到Don Clugston的FastDelegate,当时只知道是类似boost::function的东西,UI上当watcher用的比较多,所以也没去关注。今天想写个事件触发器时,突然想起这茬子,看来有必要认真的研究学习下了。搜了下网上关于Delegate的东西,有很多网友自个实现的简易版本,CodeProject上有2个开源项目写的不错,一个就是FastDelegate,还有一个模仿C#的Delegate。FastDelegate的实现依赖于编译器,作者NB的研究了各种编译器在各种平台上生成的汇编代码,将C++中神秘的成员函数调用还原普通的函数调用,其调用的汇编代码用他的框 阅读全文
posted @ 2013-05-03 21:07 日月王 阅读(469) 评论(0) 推荐(0) 编辑
摘要: C++的委托//TestDelegate.cpp:定义控制台应用程序的入口点。//#include"stdafx.h"typedefunsignedlonggulong;typedefchargchar;typedefvoid*gpointer;typedeflongGObject;void*g_lpObject=0;classBaseObject{public:BaseObject();virtual~BaseObject();/*创建对象并绑定信号的接口*/virtualgulongsetupObject()=0;//protected:typedefgulong(Ba 阅读全文
posted @ 2013-05-03 16:32 日月王 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 一般,编译器采取最差的,而且一直使用最普通的形式。比如对于下面这个结构:// Borland (缺省设置) 和Watcom C++. struct {FunctionPointer m_func_address;int m_delta;int m_vtable_index; //如果不是虚拟继承,这个值为0。};// Metrowerks CodeWarrior使用了稍微有些不同的方式。//即使在不允许多重继承的Embedded C++的模式下,它也使用这样的结构!struct {int m_delta;int m_vtable_index; // 如果不是虚拟继承,这个值为-1。Functi 阅读全文
posted @ 2013-05-03 14:47 日月王 阅读(182) 评论(0) 推荐(0) 编辑