Maison  >  Article  >  développement back-end  >  Pointeurs de fonction C++ et objets de fonction : libérer le potentiel caché de votre code

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

王林
王林original
2024-04-29 10:33:01694parcourir

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

Exemple :

La fonction suivante calcule la somme de deux nombres :

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

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

int (*add_ptr)(int, int) = add;

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

int result = add_ptr(10, 20); // 等价于 add(10, 20)

函数对象

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

struct FunctionObject {
  return_type operator()(parameter1, parameter2, ...);
};

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

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)

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

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]);
  }
}
🎜🎜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!

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