仿函数

 1 /* 内部函数绑定 */
 2 
 3 /* 引用内部函数绑定机制 */
 4 
 5 #include<iostream>
 6 #include<finctional>// 处理函数
 7 
 8 using namespace std;
 9 using namespace std::placeholders;
10 
11 // 仿函数 :创建一个函数指针,引用一个结构体内部或者一个类内部的公有函数
12 struct MyStruct
13 {
14     void add(int a)
15     {
16         cout << a << endl;
17     }
18 
19     void add2(int a,int b)
20     {
21         cout << a+b << endl;
22     }
23 
24     void add3(int a,int b,int c)
25     {
26         cout << a+b+c << endl;
27     }
28 };
29 
30 int main()
31 {
32     MyStruct struct1;
33 
34     // _1 代表一个参数
35     // auto 自动变量 当作一个地址来解析,第一种是函数指针 
36     // 第二种是数据指针这里当函数指针处理
37     // 第一个参数引用内部函数
38     // 第二个参数是绑定一个实体对象
39     // 第三个是代表有多少个参数
40     auto func = bind(&MyStruct::add,&struct1,_1);
41 
42     auto func2 = bind(&MyStruct::add2,&struct1,_1,_2);
43     
44     auto func3 = bind(&MyStruct::add3,&struct1,_1,_2,_3);
45 
46 
47     func(100);
48 
49     func2(10,20);
50     
51     func3(10,20,30);
52 
53 
54     cin.get();
55     return 0;
56 }
57 
58 //-----------------------------------------------
59 
60 void main()
61 {
62     MyStruct struct1;
63 
64     // 创建函数指针  类 结构体  数据私有 代码共享
65     // 函数通过调用,调用需要传递对象名进行区分
66     void (MyStruct::*p)(int a) = &MyStruct::add;
67 }

 

posted on 2015-06-01 21:16  Dragon-wuxl  阅读(141)  评论(0)    收藏  举报

导航