C++???????????????
???????????? ???????[ 2013/2/27 10:00:57 ] ????????
???????????
????????????
View Code
#include "Event.h"
using namespace std;
void f1(int?? int)
{
puts("f1()");
}
struct F2
{
F2() { puts("F2 construct"); }
F2(const F2 &) { puts("F2 copy"); }
F2(F2 &&) { puts("F2 move"); }
F2& operator=(const F2 &) { puts("F2 copy assign"); return *this; }
F2& operator=(F2 &&) { puts("F2 move assign"); return *this; }
void f(int?? int)
{
puts("f2()");
}
void fc(int?? int) const
{
puts("f2c()");
}
};
struct F3
{
F3() { puts("F3 construct"); }
F3(const F3 &) { puts("F3 copy"); }
F3(F3 &&) { puts("F3 move"); }
F3& operator=(const F3 &) { puts("F3 copy assign"); return *this; }
F3& operator=(F3 &&) { puts("F3 move assign"); return *this; }
void operator ()(int?? int) const
{
puts("f3()");
}
};
int _tmain(int argc?? _TCHAR* argv[])
{
Utility::Event<int?? int> e;
// ?????
e.addHandler(f1);
int id = e.addHandler(&f1);
e.removeHandler(id); // ?????????????
// ???????
using namespace std::placeholders;
F2 f2;
const F2 *pf2 = &f2;
e.addHandler(bind(&F2::f?? &f2?? _1?? _2)); // std::bind
e.addHandler(&f2?? &F2::f);
e.addHandler(pf2?? &F2::fc); // ???????
puts("----addHandler(f2?? &F2::f)----");
e.addHandler(f2?? &F2::f); // ??????????
puts("----addHandler(F2()?? &F2::f)----");
e.addHandler(F2()?? &F2::f); // ??????????
puts("--------");
// ?o???
F3 f3;
const F3 *pf3 = &f3;
puts("----addHandler(f3)----");
e.addHandler(f3); // ??????????
puts("----addHandler(F3())----");
e.addHandler(F3()); // ??????????
puts("--------");
e.addHandler(ref(f3)); // ???÷o???????
e.addHandler(ref(*pf3)); // ???÷o???????????
puts("--------");
// Lambda????
e.addHandler([](int?? int) {
puts("f4()");
});
// ???????
e(1?? 2);
return 0;
}
??????
???·???
??????????????????
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