c++++ 中的函数指针是指向函数的变量,允许将函数作为参数传递。使用函数指针可以通过定义它们,将函数名或 lambda 表达式赋给它们,并像调用普通函数一样调用它们。函数指针广泛应用于函数器,如排序函数器,允许在运行时创建和使用排序函数。
C++ 中函数指针的定义和用法
函数指针是一种指向函数的变量。它提供了将函数作为参数传递的能力,并在运行时调用函数的灵活性。
定义函数指针
在 C++ 中,函数指针可以如下定义:
returntype (*function_ptr_name)(param_type1, param_type2, ...);
登录后复制
例如,定义一个指向接受两个整数参数并返回整数的函数的指针:
int (*add_pointer)(int, int);
登录后复制
初始化函数指针
可以通过将函数名赋给函数指针来初始化它:
add_pointer = add; // 假设 add 是一个接收两个整数并返回整数的函数
登录后复制
或者,可以使用 lambda 表达式创建函数指针:
add_pointer = [](int a, int b) -> int { return a + b; };
登录后复制
调用函数指针
可以像调用普通函数一样调用函数指针:
int result = add_pointer(10, 20);
登录后复制
实战案例:排序函数器
函数指针的一个常见应用是函数器,它允许在运行时创建和使用排序函数。例如,以下代码使用函数指针实现带比较函数的 std::sort
:
#include <iostream> #include <vector> #include <algorithm> int main() { std::vector<int> numbers = {3, 1, 5, 2, 4}; // 定义比较函数指针 int (*compare_func)(int, int) = [](int a, int b) -> bool { return a < b; }; // 使用函数指针排序 std::sort(numbers.begin(), numbers.end(), compare_func); // 输出排序后的结果 for (const auto& number : numbers) { std::cout << number << ' '; } return 0; }
登录后复制
以上就是C++ 中函数指针的定义和用法的详细内容,更多请关注其它相关文章!
Article Links:https://www.hinyin.com/n/57178.html
Article Source:admin
Article Copyright:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。