Maison >développement back-end >C++ >La définition et l'utilisation des pointeurs de fonction en C++

La définition et l'utilisation des pointeurs de fonction en C++

PHPz
PHPzoriginal
2024-04-13 14:15:01646parcourir

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.

C++ 中函数指针的定义和用法

Définition et utilisation des pointeurs de fonction en C++

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.

Définir un pointeur de fonction

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);

Initialisation d'un pointeur de fonction

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; };

Appeler un pointeur de fonction

Vous pouvez appeler une fonction pointeur comme une fonction normale :

int result = add_pointer(10, 20);

Cas pratique : fonction de tri

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn