十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
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;
 - }