Maison > développement back-end > C++ > le corps du texte

Pointeurs de fonction C++ et objets de fonction : libérer le potentiel caché de votre code

王林
Libérer: 2024-04-29 10:33:01
original
729 Les gens l'ont consulté

Les pointeurs de fonctions C++ pointent vers des fonctions, permettant d'appeler des fonctions via des pointeurs. Un objet fonction est une classe ou une structure qui surcharge l’opérateur Operator() et peut être appelée comme une fonction. Ils sont utiles lorsque vous travaillez avec des fonctions de rappel, qui sont des fonctions transmises à une autre fonction en tant qu'arguments.

C++ 函数指针与函数对象:解锁代码的隐藏潜力

Pointeurs de fonction et objets de fonction C++ : libérer le potentiel caché de votre code

Introduction

En C++, les pointeurs de fonction et les objets de fonction sont des outils puissants pour représenter et manipuler des fonctions dans votre code. Comprendre ces concepts est crucial car cela peut améliorer considérablement la flexibilité et la maintenabilité de votre code.

Pointeur de fonction

Un pointeur de fonction est un pointeur vers une fonction. Il stocke l'adresse de la fonction et vous permet d'appeler la fonction via un pointeur. La syntaxe est la suivante :

return_type (*function_pointer)(parameter1, parameter2, ...);
Copier après la connexion

Exemple :

La fonction suivante calcule la somme de deux nombres :

int add(int a, int b) {
  return a + b;
}
Copier après la connexion

On peut pointer vers cette fonction à l'aide du pointeur de fonction suivant :

int (*add_ptr)(int, int) = add;
Copier après la connexion

Maintenant, on peut appeler ajouter via le pointeur de fonction Fonction : add 函数:

int result = add_ptr(10, 20); // 等价于 add(10, 20)
Copier après la connexion

函数对象

函数对象是一种类或结构,重载了 operator()

struct FunctionObject {
  return_type operator()(parameter1, parameter2, ...);
};
Copier après la connexion

Objet fonction

Un objet fonction est une classe ou une structure qui surcharge l'opérateur operator() afin qu'il puisse être appelé comme une fonction. La syntaxe est la suivante :

struct AddFunctionObject {
  int operator()(int a, int b) {
    return a + b;
  }
};
Copier après la connexion

Exemple :

On crée un objet fonction pour calculer la somme de deux nombres :

AddFunctionObject add_object;
int result = add_object(10, 20); // 等价于 add(10, 20)
Copier après la connexion

Maintenant, on peut instancier cet objet et l'appeler comme une fonction :

void process_numbers(int* numbers, int size, int (*operation)(int)) {
  for (int i = 0; i < size; i++) {
    numbers[i] = operation(numbers[i]);
  }
}
Copier après la connexion

Pratique exemple : Fonctions de rappel

Les pointeurs de fonction et les objets de fonction sont très utiles lors de l'utilisation de fonctions de rappel. Une fonction de rappel est une fonction transmise à une autre fonction en tant que paramètre.

Exemple :

Supposons que nous ayons une fonction qui transmet un ensemble de nombres à une autre fonction. Ce dernier effectue des opérations sur chaque numéro. Nous pouvons transmettre la deuxième fonction en tant que fonction de rappel en utilisant un pointeur de fonction ou un objet de fonction.

Utilisez le pointeur de fonction :

🎜
void process_numbers(int* numbers, int size, FunctionObject& operation) {
  for (int i = 0; i < size; i++) {
    numbers[i] = operation(numbers[i]);
  }
}
Copier après la connexion
🎜🎜Utilisez l'objet de fonction : 🎜🎜rrreee

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!