C++零基础教程之std:function函数包装器

前言

C++中可调用对象的虽然都有一个比较统一的操作形式,但是定义方法五花八门,这样就导致使用统一的方式保存可调用对象或者传递可调用对象时,会十分繁琐。C++提供了std::function和std::bind统一了可调用对象的各种操作。不同类型可能具有相同的调用形式。使用前记得加上functional头文件。

成都创新互联从2013年创立,是专业互联网技术服务公司,拥有项目成都网站设计、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元深泽做网站,已为上家服务,为深泽各地企业和个人服务,联系电话:028-86922220

包装普通函数

 
 
 
  1. #include  
  2. #include  
  3. #include  
  4. using namespace std; 
  5. int Max(int a, int b)  
  6.     return a > b ? a : b; 
  7. void print()  
  8.     cout << "无参无返回值" << endl; 
  9. int main() 
  10.   function funMax(Max); 
  11.     cout << funMax(1, 2) << endl; 
  12.     function funPrint(print); 
  13.     print(); 
  14.     printData(funMax, 1, 2); 
  15.   return 0; 

包装类的静态方法

 
 
 
  1. #include  
  2. #include  
  3. #include  
  4. using namespace std; 
  5. class Test  
  6. public: 
  7.     static void  print(int a, int b)  
  8.     { 
  9.         cout << a + b << endl; 
  10.     } 
  11.     void operator()(string str)  
  12.     { 
  13.         cout << str << endl; 
  14.     } 
  15.     operator FuncPTR()  
  16.     { 
  17.         return print; 
  18.     } 
  19. }; 
  20. int main()  
  21.     //包装类的静态方法 
  22.     function sFunc = Test::print; 
  23.     sFunc(1, 2); 
  24.     return 0; 

包装仿函数

 
 
 
  1. #include  
  2. #include  
  3. #include  
  4. using namespace std; 
  5. class Test  
  6. public: 
  7.     void operator()(string str)  
  8.     { 
  9.         cout << str << endl; 
  10.     } 
  11. }; 
  12. int main()  
  13.     //包装仿函数 
  14.     Test test; 
  15.     function funTest = test; 
  16.     test("仿函数"); 
  17.     return 0; 

包装转换成函数指针的对象 (operator的隐式转换)

 
 
 
  1. #include  
  2. #include  
  3. #include  
  4. using namespace std; 
  5. using FuncPTR = void(*)(int, int); 
  6. class Test  
  7. public: 
  8.   static void  print(int a, int b)  
  9.     { 
  10.         cout << a + b << endl; 
  11.     } 
  12.     operator FuncPTR()  
  13.     { 
  14.         return print; 
  15.     } 
  16. }; 
  17. int main()  
  18.     //包装转换成函数指针的对象  (operator的隐式转换) 
  19.     Test object; 
  20.     function funOPE = object; 
  21.     funOPE(2, 3); 
  22.     return 0; 

新闻标题:C++零基础教程之std:function函数包装器
新闻来源:http://www.shufengxianlan.com/qtweb/news41/401291.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联