La surcharge de fonctions peut être utilisée pour obtenir un polymorphisme, c'est-à-dire appeler une méthode de classe dérivée via un pointeur de classe de base, et le compilateur sélectionne la version surchargée en fonction du type de paramètre réel. Dans l'exemple, la classe Animal définit une fonction virtuelle makeSound() et les classes Dog et Cat remplacent cette fonction. Lorsque makeSound() est appelée via le pointeur Animal*, le compilateur appellera la version remplacée correspondante en fonction de l'objet pointé. type, réalisant ainsi le polymorphisme sexuel.
Comment la surcharge de fonctions C++ atteint-elle le polymorphisme
Qu'est-ce que la surcharge de fonctions ?
La surcharge de fonctions est une technique de programmation qui définit plusieurs fonctions avec le même nom mais différents types de paramètres ou numéros dans la même portée.
Comment utiliser la surcharge de fonctions pour réaliser le polymorphisme ?
Le polymorphisme est une fonctionnalité qui permet d'appeler des méthodes de classe dérivées via un pointeur ou une référence de classe de base. La relation entre la surcharge de fonctions et le polymorphisme en C++ est la suivante :
Exemple pratique
Le code suivant montre comment utiliser la surcharge de fonctions pour obtenir le polymorphisme :
#include <iostream> class Animal { public: virtual void makeSound() { // 声明为虚函数 std::cout << "Animal sound" << std::endl; } }; class Dog : public Animal { public: void makeSound() override { // 重写 makeSound() std::cout << "Woof woof" << std::endl; } }; class Cat : public Animal { public: void makeSound() override { // 重写 makeSound() std::cout << "Meow meow" << std::endl; } }; int main() { Animal* animalptr; // 基类指针 // 指向 Dog 对象 animalptr = new Dog(); animalptr->makeSound(); // 调用 Dog::makeSound() // 指向 Cat 对象 animalptr = new Cat(); animalptr->makeSound(); // 调用 Cat::makeSound() delete animalptr; return 0; }
Sortie :
Woof woof Meow meow
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!