C# delegate 本质上是一个函数的面对对象的封装, 在C++语言中函数分好多种,包括 全局函数,成员函数,函数对象(即functor,虽然不是函数,但由于行为像函数,所以归为函数一类),考试.大提示因此在C++里实现delegate的关键就是封装上述3类函数的不同,对外供应全都的接口,先来看一下delegate的实现。
template
class Delegate
{ public:
Delegate(){}
virtual ~Delegate(){}
public:
typedef TReturn (*InvokerType)(TArgument args);
// for global or static methods
Delegate(TReturn (*pCallback)(TArgument))
:m_pInvoker(NULL)
{ Invoker::Bind(pCallback);
m_pInvoker = Invoker::Invoke;
} // for object member methods
...


雷达卡


京公网安备 11010802022788号







