Maison >développement back-end >C++ >Comment utiliser des modèles de fonctions C++ pour généraliser les pointeurs de fonctions ?

Comment utiliser des modèles de fonctions C++ pour généraliser les pointeurs de fonctions ?

PHPz
PHPzoriginal
2024-04-15 14:12:01922parcourir

Le modèle de fonction C++ permet la généralisation des pointeurs de fonction et prend en charge les pointeurs de fonction de différents types de paramètres. Les étapes spécifiques sont les suivantes : déclarer un modèle de fonction avec un pointeur de fonction, où T est le paramètre de type de modèle. Passez le pointeur de fonction à généraliser en paramètre à la fonction modèle. Les fonctions de modèle renvoient des pointeurs de fonction génériques.

如何使用 C++ 函数模板实现函数指针的泛型化?

Utilisez des modèles de fonctions C++ pour généraliser les pointeurs de fonctions

Introduction

Les pointeurs de fonctions C++ fournissent un moyen de transmettre des fonctions en tant que paramètres ou de valeurs de retour. Toutefois, si vous souhaitez créer des pointeurs de fonction prenant en charge différents types de paramètres, vous devez utiliser des modèles de fonction. Les modèles de fonctions peuvent générer différentes versions d'une fonction avec des paramètres de types spécifiques.

Syntaxe du modèle de fonction

Voici comment déclarer un modèle de fonction avec un pointeur de fonction :

template <typename T>
auto make_function_pointer(T function) {
  return function;
}

où :

  • T est le paramètre de modèle du type à utiliser. Il peut être de n’importe quel type, y compris les types de pointeurs de fonction. T 是要使用的类型的模板参数。它可以是任何类型,包括函数指针类型。
  • function
  • function est un pointeur de fonction pour être générique.

Cas pratique

Créons un pointeur de fonction générique pouvant recevoir tout type de fonction et la renvoyer sous forme d'entier.

#include <iostream>

template <typename T>
int generic_function_pointer(T function) {
  return function();
}

int main() {
  // 定义一个函数,返回一个整数
  int my_function() {
    return 10;
  }

  // 创建一个泛型函数指针
  auto function_ptr = generic_function_pointer(my_function);

  // 调用函数指针
  int result = function_ptr();

  std::cout << "Result: " << result << std::endl;

  return 0;
}
sortie

🎜
Result: 10

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