Maison >développement back-end >C++ >La définition et l'utilisation des pointeurs de fonction en C++
Un pointeur de fonction en C++ est une variable pointant vers une fonction, permettant de passer des fonctions en arguments. À l'aide de pointeurs de fonction, vous pouvez les définir, leur attribuer des noms de fonction ou des expressions lambda et les appeler comme des fonctions normales. Les pointeurs de fonction sont largement utilisés dans les opérateurs de fonction, tels que les opérateurs de fonctions de tri, permettant de créer et d'utiliser des fonctions de tri au moment de l'exécution.
Un pointeur de fonction est une variable qui pointe vers une fonction. Il offre la possibilité de transmettre des fonctions sous forme d'arguments et la flexibilité d'appeler des fonctions au moment de l'exécution.
En C++, un pointeur de fonction peut être défini comme suit :
returntype (*function_ptr_name)(param_type1, param_type2, ...);
Par exemple, définissez un pointeur vers une fonction qui accepte deux paramètres entiers et renvoie un entier :
int (*add_pointer)(int, int);
peut être fait en passant la fonction Attribuer un nom à un pointeur de fonction pour l'initialiser :
add_pointer = add; // 假设 add 是一个接收两个整数并返回整数的函数
Alternativement, vous pouvez utiliser une expression lambda pour créer un pointeur de fonction :
add_pointer = [](int a, int b) -> int { return a + b; };
Vous pouvez appeler une fonction pointeur comme une fonction normale :
int result = add_pointer(10, 20);
Une application courante des pointeurs de fonction est les fonctionnalisateurs, qui permettent de créer et d'utiliser des fonctions de tri au moment de l'exécution. Par exemple, le code suivant utilise des pointeurs de fonction pour implémenter std::sort
avec une fonction de comparaison :
#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; }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!