Maison  >  Article  >  développement back-end  >  Comment utiliser la surcharge du pointeur de fonction C++ et la programmation générique ?

Comment utiliser la surcharge du pointeur de fonction C++ et la programmation générique ?

PHPz
PHPzoriginal
2024-04-17 13:45:021128parcourir

La surcharge de pointeurs de fonctions C++ implémente des pointeurs vers plusieurs fonctions avec le même nom mais des paramètres ou des valeurs de retour différents en spécifiant différentes signatures de fonction. La programmation générique utilise des modèles pour créer des fonctions et des structures de données qui fonctionnent avec différents types de données, rendant ainsi le code réutilisable. L'utilisation de la surcharge de pointeurs de fonction nécessite l'écriture de fonctions distinctes pour chaque type, alors que la programmation générique utilise des fonctions génériques pour gérer tous les types.

如何使用 C++ 函数指针重载和泛型编程?

Utilisation de la surcharge du pointeur de fonction C++ et de la programmation générique

Surcharge du pointeur de fonction

La surcharge du pointeur de fonction vous permet de créer des pointeurs vers plusieurs fonctions avec le même nom mais des paramètres ou des valeurs de retour différents. Ceci est réalisé en intégrant la signature de fonction au type de pointeur.

int add(int x, int y);
double add(double x, double y);

int* addPtr = add; // 指向 int 版本的函数
double* addPtr = add; // 指向 double 版本的函数

Programmation générique

La programmation générique utilise des modèles pour créer des fonctions et des structures de données qui peuvent être appliquées à différents types de données. Il vous permet d'écrire du code réutilisable qui n'est spécifique à aucun type particulier.

template <typename T>
T max(T a, T b) {
  return (a > b) ? a : b;
}

Le modèle de fonction max() peut être utilisé pour tout type de données comparable, tel que int, double et string.

Cas pratique

Considérons un programme qui doit additionner des données de différents types :

// using function pointers
int sum(int* arr, int len) {
  int result = 0;
  for (int i = 0; i < len; i++) {
    result += arr[i];
  }
  return result;
}

double sum(double* arr, int len) {
  double result = 0.0;
  for (int i = 0; i < len; i++) {
    result += arr[i];
  }
  return result;
}

// using templates
template <typename T>
T sum(T* arr, int len) {
  T result = 0;
  for (int i = 0; i < len; i++) {
    result += arr[i];
  }
  return result;
}

À l'aide de pointeurs de fonction, nous devons écrire une fonction de somme distincte pour chaque type. En utilisant une programmation générique, nous écrivons une fonction de sommation générale qui peut être utilisée avec n'importe quel type.

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