C++中的delegate机制:现在网上可以找到的解决方案

本文介绍了C++中两种delegate机制的实现方式,一种是通过Yingle Jiang提出的类似于C#风格的实现,另一种是Don Clugston提供的依赖编译器特性的高效实现方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++中的delegate机制:现在网上可以找到的解决方案

(2011-12-28 13:15:51)
标签:

杂谈

分类: linux下编程

说道C++中的delegate机制,在网上已经有很多人给出了自己的实现,我觉得最值得借鉴的有两篇,第一个是Yingle Jiang(蒋迎乐)在CodeProject上面发表的Yet Another C#-style Delegate Class in Standard C++http://www.codeproject.com/cpp/acfdelegate.asp),另一个是Don Clugston在CodeProject上写的Member Function Pointers and the Fastest Possible C++ Delegates – The Code Project – C++ / MFChttp://www.codeproject.com/cpp/FastDelegate.asp)。

对于第一篇,Yingle Jiang所实现的delegate和我所想的方案非常类似,当然,他实现了更多更强大的功能,做的比我完善的多。因此,今天仔细看了他的解决方案之后就觉得没有必要再做下去了,在这种思路之下我暂时没有想到有什么值得改进的地方。值得一提的是,他自己在SourceForge上面做了一个名为Another C++ Framework的开源项目,目的是将.Net Framework中的一些基础设施引入到C++开发中去,这就包括delegate和EventHandler,我觉得今后如果要用到类似的基础设施完全可以从他那里获得经验并且移植。

对于第二篇,Don Clugston则用一种依赖于编译器的方式实现了高效的成员函数指针调用和C++的delegate机制。简单的说,他利用各种编译器在各种平台上生成的汇编代码的特点,将C++中神秘的成员函数调用还原普通的函数调用,其调用的汇编代码用他的框架在运行时“生成”,使任何函数都可以无差别的挂接在他的 delegate之上。可以看出,他为了实现这个机制对很多种编译器在很多平台上的表现都做过研究,其艰辛可想而知。

总而言之,我已经没必要花时间实现更完善的delegate和EventHandler机制,我将更多的关注插件机制,自己做一个简单可用的东西再说。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值