0 引言
今天在学习函数指针的时候想到了委托实现的基本原理,接下来简单的复现一下。
1 函数指针模拟多播委托
首先使用typedef定义了一种类型的函数指针。然后创建以绑定委托的函数集合 Slots。然后在委托调用时,遍历 Slots 集合,依次调用绑定的消息函数。
代码如下:
#include <iostream>
#include <vector>
using namespace std;
typedef void (*SlotPtr) ();
vector<SlotPtr> Slots;
void Delegate()
{
// 发出广播
cout << "Call Delegate" << endl;
for (auto Slot : Slots)
{
Slot();
}
}
void Slot1()
{
cout << "Slot1" << endl;
}
void Slot2()
{
cout << "Slot2" << endl;
}
int main()
{
// 模拟绑定过程
Slots.emplace_back(Slot1);
Slots.emplace_back(Slot2);
// 模拟广播
Delegate();
return 0;
}