可调用对象
可调用对象类型
在 C++ 中,可调用对象包括以下几种:
- 函数
- 函数指针
- lambda 表达式
- bind 创建的对象
- 重载了函数调用运算符的类
函数表与 std::function
当我们需要定义一个函数表来存储指向一组可调用对象的指针时,普通的 map 容器无法直接存储 lambda 表达式。这时我们需要使用 <functional>
头文件中的 std::function
类。
使用 std::function
可以统一存储不同类型的可调用对象。
处理重载函数
当需要将重载的函数存入 function 类对象时,需要使用 lambda 表达式来指定具体版本,以消除二义性。例如:
1 | auto f = [](int x) { return overloaded_func(x); }; // 指定使用接受 int 参数的版本 |
评论