callable类型 是什么?
在 C++ 中,callable 类型(可调用类型)是指可以像函数一样被调用的对象
C++ 中有多种不同的可调用对象类型,它们可以通过函数调用运算符 ()
被调用。
常见的 callable 类型包括:
- 普通函数(普通函数、静态函数、成员函数)
- 函数指针
- 仿函数(函数对象)
- Lambda 表达式
std::function
类型
1. 普通函数
普通的全局函数或静态成员函数是最常见的 callable 类型,它们可以直接通过 ()
被调用。
#include <iostream>
void my_function() {
std::cout << "Hello from a regular function!" << std::endl;
}
int main() {
my_function(); // 直接调用函数
}
2. 函数指针
函数指针是指向函数的指针,也是一种可调用对象。
#include <iostream>
void my_function() {
std::cout << "Hello from a function pointer!" << std::endl;
}
int main() {
void (*func_ptr)() = my_function; // 定义函数指针
func_ptr(); // 通过函数指针调用函数
}
3. 仿函数(函数对象)
仿函数是通过重载 operator()
运算符的类或结构体实例。这使得类的实例可以像函数一样被调用。
#include <iostream>
struct MyFunctor {
void operator()() const {
std::cout << "Hello from a functor!" << std::endl;
}
};
int main() {
MyFunctor functor;
functor(); // 调用仿函数
}
4. Lambda 表达式
Lambda 表达式是 C++11 引入的匿名函数,可以捕获外部变量。它们也是一种 callable 类型。
#include <iostream>
int main() {
auto lambda = []() {
std::cout << "Hello from a lambda!" << std::endl;
};
lambda(); // 调用 lambda
}
5. std::function
std::function
是一个通用的函数包装器,可以存储任何可调用对象,包括函数、lambda 表达式、仿函数等。
#include <iostream>
#include <functional>
void my_function() {
std::cout << "Hello from std::function!" << std::endl;
}
int main() {
std::function<void()> func = my_function;
func(); // 通过 std::function 调用函数
}
总结:
在 C++ 中,callable 类型泛指那些可以通过 ()
操作符调用的对象,主要包括:
- 普通函数
- 函数指针
- 仿函数(函数对象)
- Lambda 表达式
std::function
这些不同的 callable 类型使得 C++ 拥有强大的函数抽象和灵活的调用机制。
分类:
C++
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具