C++函数指针与回调函数详解:从青铜到王者,一文搞懂`std::function`的降维打击!
- 互联网
- 2025-09-05 23:15:01

引言:为什么你的代码需要“传函数”?
想象你在写一个排序算法,但不确定用户想按升序还是降序排; 或者设计一个按钮控件,但不知道点击后要执行什么操作… 回调函数就像“代码外挂”——允许你把函数当参数传递,实现灵活的逻辑控制! 而std::function则是C++11给我们的超级外挂升级包!
第一章:函数指针——C语言时代的“遥控器” 1. 基本概念函数指针就是指向函数的指针变量,可以像普通函数一样被调用。
// 声明格式:返回类型 (*指针名)(参数类型列表) void (*funcPtr)(int); // 声明一个指向“接受int参数且无返回”函数的指针 2. 实战用法 // 示例函数 void printNumber(int num) { cout << "数值:" << num << endl; } // 赋值函数指针 funcPtr = &printNumber; // 或直接 funcPtr = printNumber; // 通过指针调用函数 funcPtr(42); // 输出:数值:42 3. 经典应用:回调函数 // 回调函数类型定义 typedef void (*Callback)(int); // 执行回调的函数 void processData(int data, Callback cb) { // 处理数据... cb(data * 2); // 回调 } // 调用示例 processData(21, printNumber); // 输出:数值:42痛点总结: ✅ 优点:直接、高效 ❌ 缺点:无法捕获上下文、类型限制严格(如无法处理lambda)
第二章:std::function——C++11的万能函数容器 1. 基本概念std::function是通用函数包装器,可以保存任何可调用对象:
普通函数 成员函数 Lambda表达式 函数对象(重载了operator()的类) #include <functional> // 必须包含的头文件 // 定义格式:std::function<返回类型(参数类型列表)> std::functionC++函数指针与回调函数详解:从青铜到王者,一文搞懂`std::function`的降维打击!由讯客互联互联网栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“C++函数指针与回调函数详解:从青铜到王者,一文搞懂`std::function`的降维打击!”