Maison >développement back-end >C++ >Comment utiliser les pointeurs de fonction en C++ ?

Comment utiliser les pointeurs de fonction en C++ ?

WBOY
WBOYoriginal
2024-04-12 12:27:011059parcourir

Un pointeur de fonction est un pointeur vers une fonction, utilisé pour implémenter des rappels, des fonctions anonymes et une programmation générique. Syntaxe : returnType (*functionName)(parameterList). Pour utiliser : Déclarez un pointeur vers le type de fonction souhaité et utilisez le pointeur de fonction comme n'importe quel autre pointeur. Cas pratique : Implémenter une fonction de tri et passer une fonction de comparaison pour personnaliser la logique de comparaison.

C++ 中函数指针的使用方法是什么?

Guide d'utilisation du pointeur de fonction C++

Introduction

Un pointeur de fonction est un type spécial de pointeur qui pointe vers une fonction. En C++, les pointeurs de fonction sont principalement utilisés pour implémenter des fonctions de rappel, des fonctions anonymes et de la programmation générique.

Syntaxe

La syntaxe d'un pointeur de fonction est la suivante :

returnType (*functionName)(parameterList);

Où :

  • returnType est le type de retour de la fonction pointée par le pointeur.
  • returnType 是指针指向的函数的返回类型。
  • functionName 是函数指针的名称。
  • parameterList 是指针指向的函数的参数列表。

使用

要使用函数指针,需要先声明一个指向所需函数类型的函数指针。例如:

int add(int a, int b) { return a + b; }

int (*sumFunction)(int, int); // 声明一个指向 add 函数的函数指针

然后,可以用像其他指针一样使用函数指针。例如:

// 将 sumFunction 指向 add 函数
sumFunction = &add;

// 调用 sumFunction
int result = sumFunction(10, 20); // result 将等于 30

实战案例

场景:实现一个排序函数,允许传递一个比较函数以自定义比较逻辑

#include <algorithm>
#include <vector>

// 比较函数
bool compare(int a, int b) { return a > b; }

// 排序函数,接受一个比较函数
void sortDescending(std::vector<int>& numbers, bool (*compareFunction)(int, int)) {
    std::sort(numbers.begin(), numbers.end(), compareFunction);
}

int main() {
    std::vector<int> numbers = {1, 5, 3, 2, 4};

    // 使用比较函数排序数组
    sortDescending(numbers, compare);

    // 输出排序后的数组
    for (int number : numbers) {
        std::cout << number << " ";
    }

    return 0;
}

在这个实战案例中,compare 函数指针被传递给 sortDescending 函数。sortDescending 函数使用比较函数对向量进行排序。因此,输出将是降序排序后的向量元素:5 4 3 2 1functionName est le nom du pointeur de fonction.

parameterList est la liste des paramètres de la fonction pointée par le pointeur. 🎜🎜Utiliser 🎜🎜🎜Pour utiliser un pointeur de fonction, vous devez d'abord déclarer un pointeur de fonction pointant vers le type de fonction souhaité. Par exemple : 🎜rrreee🎜 Les pointeurs de fonction peuvent alors être utilisés comme n’importe quel autre pointeur. Par exemple : 🎜rrreee🎜🎜Cas pratique🎜🎜🎜🎜Scénario : Implémenter une fonction de tri qui permet de passer une fonction de comparaison pour personnaliser la logique de comparaison🎜🎜rrreee🎜Dans ce cas pratique, le pointeur de la fonction compare est transmis à la fonction sortDescending. La fonction sortDescending trie les vecteurs à l'aide de fonctions de comparaison. Par conséquent, le résultat sera les éléments vectoriels triés par ordre décroissant : 5 4 3 2 1. 🎜

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