std::function

std::function 是 C++ 标准库中的一个模板类,它提供了一种通用、多态的函数封装。你可以将任何可调用对象(如函数、lambda 表达式、函数对象等)赋值给 std::function 对象,然后像调用普通函数一样调用它。

std::function 的主要优点是它允许你以一种类型安全的方式存储、复制和调用任何可调用对象,这使得回调和事件驱动编程变得更加容易。

以下是一个简单的例子,展示了如何使用 std::function

 

cpp复制代码

#include <iostream>
#include <functional>
// 定义一个普通的函数
void print_hello() {
std::cout << "Hello from print_hello!\n";
}
// 定义一个可调用对象(函数对象)
struct PrintHello {
void operator()() const {
std::cout << "Hello from PrintHello functor!\n";
}
};
int main() {
// 使用 std::function 存储一个函数
std::function<void()> func1 = print_hello;
func1(); // 输出 "Hello from print_hello!"
// 使用 std::function 存储一个可调用对象
std::function<void()> func2 = PrintHello();
func2(); // 输出 "Hello from PrintHello functor!"
// 使用 lambda 表达式
std::function<void()> func3 = []() {
std::cout << "Hello from lambda!\n";
};
func3(); // 输出 "Hello from lambda!"
return 0;
}

在这个例子中,std::function<void()> 是一个模板实例,它表示一个不接受任何参数并返回 void 的可调用对象。你可以将任何满足这个签名的可调用对象赋值给 std::function<void()> 类型的变量,并通过这个变量来调用它。

std::function 也可以用于更复杂的签名,包括带有参数和返回值的函数。例如,std::function<int(int, int)> 可以存储一个接受两个 int 参数并返回一个 int 的函数或可调用对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值