std::function怎么用
时间: 2023-10-28 09:57:24 浏览: 83
std::function是C++11中的一个函数包装器,它可以用来存储和调用可调用对象(例如函数、函数指针、成员函数指针、lambda表达式等)。下面是std::function的基本用法示例:
```cpp
#include <iostream>
#include <functional>
// 函数1
int add(int a, int b) {
return a + b;
}
// 函数2
void printHello() {
std::cout << "Hello!" << std::endl;
}
// 类中的成员函数
class MyClass {
public:
void printMessage(const std::string& message) {
std::cout << "Message: " << message << std::endl;
}
};
int main() {
// 声明一个std::function对象,并赋值为函数add
std::function<int(int, int)> func1 = add;
// 调用func1
int result = func1(3, 4);
std::cout << "Result: " << result << std::endl;
// 声明一个std::function对象,并赋值为函数printHello
std::function<void()> func2 = printHello;
// 调用func2
func2();
// 声明一个std::function对象,并赋值为成员函数printMessage
MyClass obj;
std::function<void(MyClass&, const std::string&)> func3 = &MyClass::printMessage;
// 调用func3
func3(obj, "Hello from member function!");
return 0;
}
```
在上面的示例中,我们首先定义了几个不同类型的可调用对象:一个普通函数`add`、一个无返回值的函数`printHello`,以及一个类`MyClass`的成员函数`printMessage`。然后我们使用std::function声明了三个函数对象:func1、func2、func3,并分别将可调用对象赋值给它们。最后,我们通过调用函数对象来执行相应的函数功能。
阅读全文