C++ 常见知识积累
C++八股文面经总结(含答案),收藏起来慢慢看 - linux的文章 - 知乎
https://zhuanlan.zhihu.com/p/669939217
1.函数指针
C++ 中的 函数指针 是一种可以指向函数的指针变量,允许你将函数作为参数传递、存储、动态调用等。它在回调机制、策略模式、动态调度等场景中非常常见。
void sayHello() {std::cout << "Hello callback!" << std::endl;
}void doSomething(void (*callback)()) {// do somethingcallback(); // 调用传入的函数
}int main() {doSomething(sayHello); // 传入函数作为参数
}
2.lamda表达式
在 C++ 中,Lambda 表达式 是一种用于定义匿名函数(inline 函数对象)的机制,写法简洁、灵活,非常适合用于临时函数逻辑、回调、STL 算法等场景。
[capture](parameters) -> return_type {// function body
};
#include <iostream>
using namespace std;int main() {int base = 10;// 捕获外部变量 base,同时接受两个参数 a 和 bauto add_base = [base](int a, int b) {return a + b + base;};cout << add_base(1, 2) << endl; // 输出 13return 0;
}
3.bind用法
#include <functional>auto new_func = std::bind(原函数, 参数1, 参数2, ...);
#include <iostream>
#include <functional>
using namespace std;int add(int a, int b) {return a + b;
}int main() {// 绑定第一个参数为10,第二个参数用占位符auto f = std::bind(add, 10, std::placeholders::_1);cout << f(5) << endl; // 输出 15,相当于调用 add(10, 5)
}
实际上,很多 std::bind
的用法在现代 C++ 中建议用 Lambda 表达式替代:
auto f = [](int b){ return add(10, b); };