Maison >développement back-end >C++ >Application de la programmation générique à la surcharge et à la réécriture de fonctions C++
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.
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!