理解C++实现委托原理

      在C#中有事件委托的概念,  我们可以方便的将一个类中的事件传递到另一个事件处理类中, 其实现的耦合性很底, 两个类之间不需要实例关联,  但在C++中并没有这种内置的功能,  其实仔细想想, C#的这种事件委托机制是可以用C++的成员函数指针来实现的, 只需要加上一个中间类即可,  网上有个FastDelegate的开源库就实现了这种委托机制, 有需要用到C++委托的朋友可以上网找找这个库.  我们这里只是简单介绍下C++实现委托机制的原理, 也是参照了FastDelegate库.

      前面说过, 要实现C++委托, 需要一个中间类, 这个中间类是用来保存函数指针和例实例的, 因为要实现通用性, 所以我们还需要用到C++模板技术, 定义的类如下:

     在这个中间类里, 我们重载了()操作符来调用成员函数指针,  然后我们还需要一个函数来创建中间类:

 

     现在主要的代码就完成了, 接下来我们看看调用方式:

      可以看出, 调用方式是非常简单的,  另外, 对于带参数的成员函数, 原理也是一样的, 具体的可参照FastDelegate自己实现

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值