C++中可调用对象的虽然都有一个比较统一的操作形式,但是定义方法五花八门,这样就导致使用统一的方式保存可调用对象或者传递可调用对象时,会十分繁琐。C++提供了std::function和std::bind统一了可调用对象的各种操作。不同类型可能具有相同的调用形式。使用前记得加上functional头文件。
成都创新互联从2013年创立,是专业互联网技术服务公司,拥有项目成都网站设计、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元深泽做网站,已为上家服务,为深泽各地企业和个人服务,联系电话:028-86922220
- #include
- #include
- #include
- using namespace std;
- int Max(int a, int b)
- {
- return a > b ? a : b;
- }
- void print()
- {
- cout << "无参无返回值" << endl;
- }
- int main()
- {
- function
funMax(Max); - cout << funMax(1, 2) << endl;
- function
funPrint(print); - print();
- printData(funMax, 1, 2);
- return 0;
- }
- #include
- #include
- #include
- using namespace std;
- class Test
- {
- public:
- static void print(int a, int b)
- {
- cout << a + b << endl;
- }
- void operator()(string str)
- {
- cout << str << endl;
- }
- operator FuncPTR()
- {
- return print;
- }
- };
- int main()
- {
- //包装类的静态方法
- function
sFunc = Test::print; - sFunc(1, 2);
- return 0;
- }
- #include
- #include
- #include
- using namespace std;
- class Test
- {
- public:
- void operator()(string str)
- {
- cout << str << endl;
- }
- };
- int main()
- {
- //包装仿函数
- Test test;
- function
funTest = test; - test("仿函数");
- return 0;
- }
- #include
- #include
- #include
- using namespace std;
- using FuncPTR = void(*)(int, int);
- class Test
- {
- public:
- static void print(int a, int b)
- {
- cout << a + b << endl;
- }
- operator FuncPTR()
- {
- return print;
- }
- };
- int main()
- {
- //包装转换成函数指针的对象 (operator的隐式转换)
- Test object;
- function
funOPE = object; - funOPE(2, 3);
- return 0;
- }
新闻标题:C++零基础教程之std:function函数包装器
新闻来源:http://www.shufengxianlan.com/qtweb/news41/401291.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联