C++11中的stdfunction怎么使用
更新时间:2023-12-20前言
在C++11中引入了std::function,它是一个通用的函数封装类,可以用来包装可调用对象,包括函数指针、成员函数指针、lambda表达式等。std::function使得函数能够像普通对象一样进行传递、保存和调用,非常灵活和方便。使用std::function的基本步骤
使用std::function需要经过以下几个步骤:1. 定义std::function对象,指定其参数列表和返回类型;
2. 将可调用对象(函数指针、成员函数指针、lambda表达式等)赋值给std::function对象;
3. 调用std::function对象。
示例代码
下面是一个使用std::function的简单示例代码,用来演示基本的使用方法:#include在上面的示例代码中,我们首先定义了一个普通函数func和一个成员函数memFunc。然后使用std::function对象f1来包装func函数,通过f1(123)调用func函数。接着使用std::function对象f2来包装memFunc成员函数,通过f2(456)调用memFunc函数。最后使用std::function对象f3来包装lambda表达式,通过f3(789)调用lambda函数。#include void func(int n) { std::cout << "Hello from func: " << n << std::endl; } class MyClass { public: void memFunc(int n) { std::cout << "Hello from memFunc: " << n << std::endl; } }; int main() { // 定义std::function对象并赋值为普通函数 std::function f1 = func; // 调用std::function对象 f1(123); // 定义std::function对象并赋值为成员函数 MyClass obj; std::function f2 = std::bind(&MyClass::memFunc, &obj, std::placeholders::_1); // 调用std::function对象 f2(456); // 定义std::function对象并赋值为lambda表达式 std::function f3 = [](int n) { std::cout << "Hello from lambda: " << n << std::endl; }; // 调用std::function对象 f3(789); return 0; }