当前位置: 首页 > 科技观察

std-function函数包装器

时间:2023-03-13 07:30:58 科技观察

forC++零基础教程调用对象时,会很繁琐。C++提供了std::function和std::bind来统一对可调用对象的各种操作。不同的类型可能有相同的调用形式。使用前记得添加功能头文件。包装普通函数#include#include#includeusingnamespacestd;intMax(inta,intb){returna>b?a:b;}voidprint(){cout<<"无参数,无返回值"<funMax(Max);cout<funPrint(print);print();printData(funMax,1,2);return0;}包装类的静态方法#include#include#includeusingnamespacestd;classTest{public:staticvoidprint(inta,intb){cout<sFunc=Test::print;sFunc(1,2);return0;}包装仿函数#include#include#includeusingnamespacestd;classTest{public:voidoperator()(stringstr){cout<funTest=test;test("likefunction");return0;}封装转换为函数指针对象(运算符的隐式转换)#include#include#includeusingnamespacestd;usingFuncPTR=void(*)(int,int);classTest{public:staticvoidprint(inta,intb){cout<funOPE=object;funOPE(2,3);return0;}