Maison  >  Article  >  développement back-end  >  Comment utiliser le polymorphisme pour gérer les différences entre différents objets en C++ ?

Comment utiliser le polymorphisme pour gérer les différences entre différents objets en C++ ?

WBOY
WBOYoriginal
2024-06-05 11:50:21532parcourir

Le polymorphisme est une fonctionnalité de programmation orientée objet qui permet aux objets de se comporter différemment au moment de l'exécution, même s'ils ont la même classe parent. En C++, le polymorphisme est obtenu grâce aux fonctions virtuelles et à l'héritage : Définissez une classe de base et une classe dérivée : la classe de base contient des fonctions virtuelles, et la classe dérivée hérite de la classe de base et remplace les fonctions virtuelles. Utiliser des pointeurs ou des références : enregistrez l'adresse de l'objet de classe de base via un pointeur ou une référence et accédez aux objets de différentes classes dérivées au moment de l'exécution. Appel via une fonction virtuelle : l’appel d’une fonction virtuelle dans la classe de base appellera la fonction de classe dérivée remplacée au moment de l’exécution. Cas pratique : Dans la hiérarchie des classes de formes, les classes Circle et Rectangle héritent de la classe Shape et remplacent les fonctions virtuelles Area(), Perimeter() et Draw(), permettant à ces formes d'être utilisées dans des applications pratiques du polymorphisme en C++

C++ 中如何使用多态性处理不同对象的差异?

Qu'est-ce que le polymorphisme ?

Le polymorphisme est une fonctionnalité des langages de programmation orientés objet qui permet aux objets de se comporter différemment au moment de l'exécution, même s'ils ont la même classe parent. En C++, le polymorphisme est obtenu grâce aux fonctions virtuelles et à l'héritage.

Comment utiliser le polymorphisme ?

Définir les classes de base et dérivées : Définissez une classe de base qui contient des fonctions virtuelles. Les classes dérivées héritent de la classe de base et remplacent les fonctions virtuelles pour fournir différentes implémentations.

    Utiliser un pointeur ou une référence :
  1. Enregistrez l'adresse de l'objet de classe de base via un pointeur ou une référence. Cela permet d'accéder aux objets de différentes classes dérivées au moment de l'exécution.
  2. Appel via une fonction virtuelle :
  3. Appelez une fonction virtuelle dans la classe de base et elle appellera la fonction de classe dérivée remplacée au moment de l'exécution, en fonction du type d'objet réel.
  4. Cas pratique : Hiérarchie des classes de forme
Classe de base Shape

class Shape {
public:
  virtual double area() = 0;
  virtual double perimeter() = 0;
  virtual void draw() = 0;
};

Classes dérivées Cercle et Rectangle

class Circle : public Shape {
public:
  ...  // 构造函数和数据成员
  virtual double area() override;
  virtual double perimeter() override;
  virtual void draw() override;
};

class Rectangle : public Shape {
public:
  ...  // 构造函数和数据成员
  virtual double area() override;
  virtual double perimeter() override;
  virtual void draw() override;
};

Utiliser le polymorphisme pour calculer l'aire et le périmètre

vector<Shape*> shapes;
shapes.push_back(new Circle(...));
shapes.push_back(new Rectangle(...));

for (auto& shape : shapes) {
  cout << "面积: " << shape->area() << endl;
  cout << "周长: " << shape->perimeter() << endl;
  shape->draw();
}

Advant âges :

Simplifiez le code et gardez la classe de base et la classe dérivée découplées.

Améliorez l'évolutivité et la maintenabilité du code.

Permet la gestion dynamique de différents objets au moment de l'exécution.

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