Maison > développement back-end > C++ > Instanciation et génération de modèles de fonctions C++

Instanciation et génération de modèles de fonctions C++

PHPz
Libérer: 2024-04-14 10:21:02
original
615 Les gens l'ont consulté

L'instanciation de modèles de fonctions permet de générer des implémentations de fonctions spécifiques à un type pour différents types lorsqu'elles sont appelées. Le compilateur effectue l'instanciation automatiquement, mais elle peut également être générée explicitement. Les modèles de fonctions offrent la possibilité de comparer des objets de différents types, par exemple en comparant des entiers et des chaînes.

C++ 函数模板的实例化和生成

Instanciation et génération de modèles de fonctions C++

Les modèles de fonctions sont une fonctionnalité C++ puissante qui vous permet de créer des méthodes qui peuvent être paramétrées pour différents types. Lorsque vous appelez un modèle de fonction d'un type spécifique, le compilateur génère une instance de fonction spécifique à ce type.

Instantiation

Le compilateur C++ effectue automatiquement l'instanciation du modèle de fonction en cas de besoin. Lorsque vous utilisez une instance de modèle de fonction d'un type spécifique, le compilateur génère une nouvelle version spécifique au type. Par exemple, le code suivant montre comment instancier un modèle std::max :

int main() {
  int a = 3;
  int b = 5;
  int max_value = std::max(a, b); // 实例化 std::max 模板以接受 int 类型
}
Copier après la connexion

Génération explicite

Dans certains cas, vous devrez peut-être générer explicitement une instance de modèle de fonction, ce qui peut être fait en utilisant le mot-clé < code> explicit : explicit

template<typename T>
void print(T value) {
  std::cout << "Value is: " << value << std::endl;
}

int main() {
  explicit template void print<int>(10); // 显式生成 print 模板的 int 实例化
  print<double>(3.14); // 默认实例化 print 模板以接受 double 类型
}
Copier après la connexion

实战案例

以下是一个使用函数模板的实战案例,它实现了比较不同类型对象的能力:

template<typename T>
bool compare(const T& lhs, const T& rhs) {
  return lhs < rhs;
}

int main() {
  int a = 3;
  int b = 5;
  std::cout << std::boolalpha << compare(a, b) << std::endl; // 比较两个 int 类型

  std::string s1 = "Hello";
  std::string s2 = "World";
  std::cout << std::boolalpha << compare(s1, s2) << std::endl; // 比较两个 std::string 类型
}
Copier après la connexion

在上面的例子中,comparerrreee

🎜Un cas pratique🎜🎜🎜Ce qui suit est un cas pratique utilisant des modèles de fonctions, qui implémente la possibilité de comparer des objets de différents types : 🎜rrreee🎜Dans l'exemple ci-dessus, compare code> Les modèles de fonctions sont conçus pour recevoir des types arbitraires et les comparer pour déterminer quelle valeur est la plus petite. Lorsque cette fonction est appelée, le compilateur génère une instanciation appropriée pour le type fourni. 🎜

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