Maison  >  Article  >  développement back-end  >  Application de la programmation générique à la surcharge et à la réécriture de fonctions C++

Application de la programmation générique à la surcharge et à la réécriture de fonctions C++

WBOY
WBOYoriginal
2024-04-21 11:54:01455parcourir

La programmation générique est implémentée en C++ via des modèles et des fonctions virtuelles. La surcharge de fonctions utilise des modèles pour accepter n'importe quel type. La substitution de fonctions utilise des fonctions de modèle virtuel pour fournir la propre implémentation d'une classe dérivée. Des exemples pratiques incluent l'utilisation de la surcharge de fonctions génériques pour rechercher des éléments et l'utilisation de fonctions génériques pour remplacer les éléments du conteneur d'impression.

C++ 函数重载和重写中泛型编程的应用

Application de la programmation générique dans la surcharge et la réécriture de fonctions C++

La programmation générique fait référence à l'écriture de code indépendant des types de données, simplifiant et réutilisant ainsi le code. En C++, nous pouvons implémenter une programmation générique en utilisant des modèles et des fonctions virtuelles.

Surcharge de fonctions permet de créer plusieurs fonctions avec différents types de paramètres en utilisant le même nom. En utilisant des modèles, nous pouvons faire en sorte que les surcharges de fonctions acceptent des arguments de tout type :

template <typename T>
void swap(T& a, T& b) {
  T temp = a;
  a = b;
  b = temp;
}

Le remplacement de fonction permet aux classes dérivées de fournir leur propre implémentation de la fonction virtuelle d'une classe parent. Nous pouvons implémenter une réécriture générique en utilisant des fonctions de modèles virtuels :

class Base {
public:
  virtual void print() {
    std::cout << "Base class" << std::endl;
  }
};

class Derived : public Base {
public:
  virtual void print() override {
    std::cout << "Derived class" << std::endl;
  }
};

Cas pratique

Utiliser la surcharge de fonctions génériques pour trouver des éléments

template <typename T>
bool find(std::vector<T>& vec, T value) {
  for (const auto& element : vec) {
    if (element == value) {
      return true;
    }
  }
  return false;
}

int main() {
  std::vector<int> int_vec = {1, 2, 3};
  std::cout << std::boolalpha << find(int_vec, 2) << std::endl; // true

  std::vector<std::string> str_vec = {"Hello", "World"};
  std::cout << std::boolalpha << find(str_vec, "World") << std::endl; // true
}

Utiliser des fonctions génériques pour réécrire des éléments de conteneur d'impression

template <typename T>
void print_container(std::vector<T>& vec) {
  for (const auto& element : vec) {
    std::cout << element << " ";
  }
  std::cout << std::endl;
}

int main() {
  std::vector<int> int_vec = {1, 2, 3};
  print_container(int_vec); // 输出: 1 2 3

  std::vector<std::string> str_vec = {"Hello", "World"};
  print_container(str_vec); // 输出: Hello World
}

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