Maison  >  Article  >  développement back-end  >  Comment l’héritage réalise-t-il le polymorphisme en C++ ?

Comment l’héritage réalise-t-il le polymorphisme en C++ ?

WBOY
WBOYoriginal
2024-06-01 13:10:57240parcourir

En C++, le polymorphisme est obtenu par héritage, permettant aux objets d'avoir des comportements différents même s'ils ont la même classe de base commune. L'héritage est une méthode de création de nouvelles classes dans laquelle la nouvelle classe (classe dérivée) hérite des membres d'une classe existante (classe de base) et peut ajouter de nouveaux membres. Lorsqu'une fonction virtuelle est appelée à l'aide d'un pointeur ou d'une référence d'un type de classe dérivée, la méthode substituée dans la classe dérivée est appelée.

C++ 中继承如何实现多态性?

Comment implémenter le polymorphisme par héritage en C++

Qu'est-ce que le polymorphisme ?

Le polymorphisme permet aux objets d'avoir des comportements différents même s'ils ont la même classe de base commune. En C++, le polymorphisme est obtenu grâce à l'héritage.

Héritage

L'héritage est une méthode de création de nouvelles méthodes d'une classe, où la nouvelle classe (classe dérivée) hérite d'une classe existante (classe de base). Une classe dérivée hérite de tous les membres (données et fonctions) de la classe de base et peut également ajouter de nouveaux membres.

Comment le polymorphisme est-il obtenu par héritage ?

En polymorphisme, un objet de classe dérivé peut avoir un pointeur ou une référence à son type de classe de base. Lorsqu'une fonction virtuelle est appelée à l'aide d'un pointeur ou d'une référence d'un type de classe dérivée, la méthode substituée dans la classe dérivée est appelée.

Exemple :

class Animal {
public:
    virtual void makeSound() {
        cout << "Animal makes a sound" << endl;
    }
};

class Dog : public Animal {
public:
    void makeSound() override {
        cout << "Woof woof!" << endl;
    }
};

class Cat : public Animal {
public:
    void makeSound() override {
        cout << "Meow meow!" << endl;
    }
};

int main() {
    Animal* animal = new Cat(); // 指向 Cat 对象的 Animal 指针
    animal->makeSound(); // 输出 "Meow meow!"
}

Dans l'exemple ci-dessus :

  • Animal est la classe de base.
  • Animal 是基类。
  • DogCat 是派生类。
  • makeSound 是一个虚函数,在派生类中重写。
  • animal 是一个指向派生类对象的基类指针。

当调用 animal->makeSound() 时,会调用派生类(Cat)中重写的 makeSoundDog et Cat sont des classes dérivées.

makeSound est une fonction virtuelle, remplacée dans les classes dérivées. 🎜animal est un pointeur de classe de base pointant vers un objet de classe dérivé. 🎜Lors de l'appel de animal->makeSound(), le makeSoundCat) sera appelé /code>, sortie "Miaou miaou!". 🎜

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