C++实现委托及分析
作者:网络转载 发布时间:[ 2013/1/29 10:57:16 ] 推荐标签:
上面这份代码实现了C#的事件(可能假设有问题)
//myclass.h
#ifndef _MYCLASS_H_
#define _MYCLASS_H_
#include <string>
#include <iostream>
#include <vector>
#include "event.h"
typedef void(*EventHandler)();
class MyClass
{
public:
MyClass(){}
void FireEvent()
{
size_t nCount = AEvent.GetEvent().size();
for (size_t i = 0 ; i < nCount ; i++)
{
(*(AEvent.GetEvent().at(i)))();
}
}
public:
event <EventHandler> AEvent;
};
#endif
上面这份代码实现了C#的委托(可能假设有问题)
//main.cpp
#include "myclass.h "
void MyEventHandler()
{
printf("This is a event!
");
}
void MyEventHandlor()
{
printf("This is another event!
");
}
int main(int argc,char* argv[])
{
MyClass Obj;
Obj.AEvent += MyEventHandler;
Obj.AEvent += MyEventHandlor;
Obj.FireEvent();
Obj.AEvent -= MyEventHandler;
Obj.FireEvent();
printf("Over!
");
system("pause");
return 0;
}
上面这份代码用于测试
三份代码实现了一个观察者模式,这儿的Subject是MyClass,Obverser是MyEventHandler()和MyEventHandlor()两个函数,形如Obj.AEvent += 函数指针是添加一个通知对象,-=是去掉一个通知对象,FireEvent()函数是执行通知的函数。
分析与代码同在,谢谢观赏!
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11