首页 > 编程语言 >C++中std::function常见用法

C++中std::function常见用法

时间:2023-03-23 17:36:41浏览次数:33  
标签:std function 函数 int C++ 对象 add

C++标准库中的std::function是一个通用的函数封装,可以用来存储、复制、调用任何可调用对象(函数、函数指针、成员函数指针、lambda表达式等)。以下是std::function的一些常见用法:

定义std::function类型
std::function类型的定义类似于函数指针类型,例如:


std::function<int(int)> func;
表示一个参数为int类型,返回值为int类型的可调用对象。

绑定函数或函数对象
可以将函数或函数对象绑定到std::function对象上,例如:

int add(int a, int b) {
return a + b;
}

struct Add {
int operator()(int a, int b) {
return a + b;
}
};
std::function<int(int, int)> f1 = add;
std::function<int(int, int)> f2 = Add();

调用std::function对象
可以像调用函数一样调用std::function对象,例如:

int result1 = f1(1, 2);
int result2 = f2(3, 4);

 

检查std::function对象是否为空
可以使用std::function对象的bool()运算符来检查它是否为空,例如:

std::function<int(int, int)> f;
if (f) {
int result = f(1, 2);
}

使用std::bind绑定成员函数或对象的成员函数
std::bind可以将成员函数或对象的成员函数绑定到std::function对象上,例如:

class Calculator {
public:
int add(int a, int b) {
return a + b;
}
};

Calculator calc;
std::function<int(int, int)> f = std::bind(&Calculator::add, &calc, std::placeholders::_1, std::placeholders::_2);

int result = f(1, 2);

以上是std::function的一些常见用法,还有其他更高级的用法,需要根据具体情况使用。

标签:std,function,函数,int,C++,对象,add
From: https://www.cnblogs.com/gchenghu/p/17248254.html

相关文章

  • 【MATLAB】S-function使用及其它
    1什么是s-functionfunction[sys,x0,str,ts,simStateCompliance]=sfuntmpl(t,x,u,flag)%SFUNTMPLGeneralMATLABS-FunctionTemplate%WithMATLABS-functions,......
  • 【C++入门】命名空间、缺省参数、函数重载
    前言在正式进入C++之前,我们首先要对C++有一个基本的认知。这里我就不过多的进行描述了,有兴趣的可以去网络搜索一番。总而言之,从名称上面我们也可以看得出来,C++是在C的基础上......
  • C++编程题(蓝桥杯)
        运行结果  #include<iostream>usingnamespacestd;voidjingsai1(){//chh:水深;chs:最初水下深度;intchh=0,chs=0;intI_depth=0;cou......
  • C++重载递增和递减运算符
    重载递增和递减运算符在迭代器类中通常会实现递增运算符(++)和递减运算符(--),这两种运算符使得类可以在元素的序列中前后移动。C++语言并不要求递增和递减运算符必须是类......
  • c++代码编译出错:undefined reference to `typeinfo for dnet::event_handler'
    编译出错信息如下:[82%]LinkingCXXexecutable../bin/dsys/usr/bin/ld:../lib/libdnet.so:undefinedreferenceto`typeinfofordnet::event_handler'collect2:er......
  • 指针常量和常量指针_C++_Learning1
    怎么读?遇到"*"读指针,遇到"const"读常量 一、指针常量//指针常量——指针(也就是它存储的地址)是一个常量,所以其值不能修改,但指向的内容可以修改 inta=10,b=......
  • C++图书订单管理系统[2023-03-22]
    C++图书订单管理系统[2023-03-22]采用面向对象程序设计方法设计并实现图书订单管理系统订单基本信息:顾客帐号、顾客姓名、订书日期、图书书号、书名、购买数量订单基本......
  • 3.22 c++提高 4day
    1.对象模型成员函数不占用对象的内存-那么他们如何找到对象的成员呢因为虽然不是默认传参但是编译器会传入this指针来指向成员21: a.test();007E40B7lea......
  • C++ 程序设计 第6章 多态与虚函数
    第6章多态与虚函数1多态的基本概念运用封装继承多态能够有效提高程序的可读性,可扩充性,可重用性。多态从字面上理解就是多种形态或多种形式。具体到C++这种面向对象程序......
  • 第4章 C++语言高级专题二
    单继承​ 继承性是面向对象程序设计中最重要的机制。这种机制提供了无限重复利用程序资源的一种途径。通过C++语言中的集成机制,可以扩展和完善旧的程序设计与适应新的需求......